Java.net.SocketException: Familia de direcciones no soportada por el protocolo en el emulador android

Estoy intentando funcionar la aplicación simple para tener acceso al Internet del emulador androide y aquí está mi código. Estoy detrás de proxy y configuración de configuración de proxy en el emulador de "… Redes inalámbricas -> APN -> …". Pero Internet funciona desde el navegador y no desde la aplicación.

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 de Logcat es la 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 

He probado las siguientes opciones después de buscar en el foro, pero ninguno de ellos parece funcionar:

  1. En las opciones de lanzamiento de android que usé -http-servidor proxy: puerto -dns-server server

  2. He incluido permisos de Internet en el archivo de manifiesto

    Usa-permission android: name = "android.permission.INTERNET"

     uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
  3. Establecer las propiedades del sistema para utilizar 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, puede por favor ayudarme aquí …

Solo trata de hacer

 connection.setConnectTimeout(timeoutInMillisecs); 

Probablemente no lo pones.

Prueba a añadir esto a tu AndroidManifest.xml:

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

Usted también necesita coger esta excepción:

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

Intente establecer su proxy y puerto de forma programática en Oncreate () como este

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

Por favor, pruebe 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); 
  • ¿Cómo enviar un montón de coordenadas (x, y) a través de la red?
  • ¿Qué tan seguro es proteger contra la ingeniería inversa?
  • No se puede hacer ping / comunicarse con dispositivos Android en la misma red
  • Android: AndroidHttpClient - ¿cómo establecer el tiempo de espera?
  • Cómo limitar la velocidad de la red del dispositivo Android para propósitos de prueba
  • ¿Cómo saber el WiFi conectado es Walled Gardened (Captive Portal)?
  • ¿Cómo maneja Android Volley temporalmente la pérdida de conexión de red?
  • ¿Está disponible la red en Android?
  • ¿Puedo configurar el tiempo de espera de getaddrinfo en Android para DefaultHttpClient?
  • abrir y reproducir un flujo de transporte en Android (mpeg2-ts)
  • Comparación de las bibliotecas de redes Android: OkHTTP, Retrofit y Volley
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.