2009-01-14 20 views
17

¿Alguien puede decirme por qué esto no funciona en el emulador de Android? Desde el navegador tengo acceso y el servidor es interno. Todo lo que puedo pensar es que me falta algo de configuración en mi aplicación para que pueda acceder a la capa de red.Android HTTP Connection

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"); 
} 

lanza una UnknownHostException

Gracias

Respuesta

30

En cuanto a la configuración va, el único ajuste que debe necesidad de acceder a Internet desde su aplicación es el permiso INTERNET, posible gracias a la adición de la siguiente línea afuera las etiquetas de aplicación dentro de su aplicación Manifiesto.

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

Así el manifiesto podría seguir esta construcción general

<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> 
+1

Eso fue todo. Muchas gracias. – Eldelshell

+0

¡Excelente! Me encanta cuando son las soluciones fáciles. –

+0

¡Guau! Esto ha alcanzado 3k vistas ... eso debería darte muchos puntos SO Reto – Eldelshell

2

Todavía no podría funcionar, debido al tiempo de espera. Ya que necesita permisos de raíz para enviar un paquete ICMP y la implementación de isReachable utilizará la versión TCP lenta de ECHO. Chekcout the javaDoc.