HTTP-соединение с Android

Кто-нибудь может сказать мне, почему это не работает в эмуляторе Android? Из браузера у меня есть доступ, а сервер внутренний. Все, о чем я могу думать, это то, что мне не хватает какой-то конфигурации в моем приложении, чтобы оно могло получить доступ к сетевому уровню.

try {
    InetAddress server = Inet4Address.getByName("thehost");
    //Doesn't work either
    //or InetAddress server2 = Inet4Address.getByAddress(new String("192.168.1.30").getBytes());

    if (server.isReachable(5000)){
        Log.d(TAG, "Ping!");
    }

    Socket clientsocket = new Socket(server, 8080);
} catch (UnknownHostException e) {
    Log.e(TAG, "Server Not Found");
} catch (IOException e) {
    Log.e(TAG, "Couldn't open socket");
}

Выдает исключение UnknownHostException

Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
18
0
19 924
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что касается конфигурации, единственная настройка, которая вам понадобится для доступа к Интернету из вашего приложения, - это разрешение INTERNET, которое активируется добавлением следующей строки за пределами тегов приложения в манифест вашего приложения.

<uses-permission android:name = "android.permission.INTERNET" />

Таким образом, манифест будет следовать этой общей конструкции

<manifest xmlns:android = "http://schemas.android.com/apk/res/android" package = "com.example.android.apis">    
  <uses-permission android:name = "android.permission.INTERNET" />
  <application 
    android:name = "MyApplication"    
    android:label = "@string/application_title"
    android:icon = "@drawable/my_icon">
    [ .. Your Activities go here ]
  </application>
</manifest>

Это может не сработать из-за тайм-аута. Поскольку вам нужны права root для отправки пакета ICMP, а реализация isReachable будет использовать медленную TCP-версию ECHO. Проверьте файл javaDoc.

Другие вопросы по теме