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

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

17 голосов
/ 14 января 2009

Кто-нибудь может сказать, почему это не работает в эмуляторе 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");
}

Выдает исключение неизвестного хоста

Спасибо

Ответы [ 2 ]

31 голосов
/ 14 января 2009

Что касается конфигурации, единственной настройкой, которая необходима вам для доступа в Интернет из вашего приложения, является разрешение ИНТЕРНЕТ, включаемое добавлением следующей строки за пределами метки приложения в манифесте приложения.

<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>
2 голосов
/ 02 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...