2012-01-11 14 views
5

Estoy tratando de ejecutar una aplicación simple para acceder a Internet desde el emulador de Android y aquí está mi código. Estoy detrás del proxy y de la configuración de proxy configurada en el emulador por "... Redes inalámbricas -> APN -> ...". Pero Internet funciona desde el navegador y no desde la aplicación.java.net.SocketException: familia de dirección no compatible con el protocolo en el emulador de Android

  HttpURLConnection connection = null; 
    String URLName = "http://www.google.com"; 

    try { 
     URL u = new URL(URLName); 
     connection = (HttpURLConnection) u.openConnection(); 
     connection.setRequestMethod("HEAD"); 
     int code = connection.getResponseCode(); 
     Log.d(TAG1, " " + code); 
     // You can determine on HTTP return code received. 200 is success. 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.d(TAG1, e.toString()); 
    } 

    finally { 
     if (connection != null) { 
      connection.disconnect(); 
     } 
    } 

La parte del registro de errores en Logcat es el siguiente:

01-11 01:01:26.308: DEBUG/SntpClient(72): request time failed: java.net.SocketException: Address family not supported by protocol 

01-11 01:02:39.909: WARN/System.err(422): java.net.SocketException: The operation timed out 

Me trataron las siguientes opciones después de buscar en el foro, pero ninguna de ellas parece trabajar:

  1. En androide Opciones de inicio que utilicé -http-proxy server: port -dns-server server

  2. I hav e incluye permisos de Internet en el archivo de manifiesto

    utiliza permiso-android: name = "android.permission.INTERNET"

    uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
    
  3. Establecer las propiedades del sistema para utilizar la pila IPv4 después de que alguien sugirió

     java.lang.System.setProperty("java.net.preferIPv4Stack", "true"); 
    java.lang.System.setProperty("java.net.preferIPv6Addresses", "false"); 
    

Estoy trabajando en Android 2.2 y Windows Vista, ¿pueden ayudarme por favor aquí ...

+0

¿El navegador funciona bien en el emulador? –

+0

@LalitPoptani sí, el navegador funciona bien en el emulador –

Respuesta

0

Intenta hacerlo .....

connection.setConnectTimeout(timeoutInMillisecs); 

Probablemente no L O Configuración ella.

+0

Intenté esto pero todavía no uso. –

+0

Bien, intente utilizar ---------- HttpConnectionParams.setConnectionTimeout (client.getParams(), CONNECTION_TIMEOUT); \t \t \t HttpConnectionParams.setSoTimeout (client.getParams(), SOCKET_TIMEOUT); –

0

Trate de añadir esto a su AndroidManifest.xml así:

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

También es necesario detectar esta excepción:

catch(SocketException ex) 
     { 
     Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage()); 
      ex.printStackTrace(); 
     } 
+0

Después de probar este, está trabajando para direcciones locales (detrás del proxy). Aún así, las direcciones externas no funcionan. –

+6

robado de http://stackoverflow.com/questions/7854300/java-net-socketexception-address-family-not-supported-by-protocol – Will

0

intenta configurar el proxy y el puerto de programación en OnCreate() como este

 System.setProperty("http.proxyHost","IPaddress of ur machine"); 
     System.setProperty("http.proxyPort","port no"); 
0

Por favor, intente esto:

HttpURLConnection con =null; 

URL url = new URL("abcdefg"); 

Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress(android.net.Proxy.getDefaultHost(),android.net.Proxy.getDefaultPort())); 

con = (HttpURLConnection) url.openConnection(proxy); 
Cuestiones relacionadas