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:
- No entiendo cómo utilizar GridLayout.spec ()
- Comparación de las bibliotecas de redes Android: OkHTTP, Retrofit y Volley
- Material Android alineando la línea de base de la fuente con una cuadrícula de 4dp
- No se puede hacer ping / comunicarse con dispositivos Android en la misma red
- ¿Está disponible la red en Android?
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:
-
En las opciones de lanzamiento de android que usé -http-servidor proxy: puerto -dns-server server
-
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"
-
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í …
- Redes Android
- Crear un NinePatch / NinePatchDrawable en tiempo de ejecución
- Android: Cómo detectar si un dispositivo es WiFi o WiFi + Celular
- Android: ¿Cómo enviar datos desde el servidor a Android sin solicitud de Android?
- Cómo enviar el archivo binario y el texto usando el mismo socket
- Obtener la lista de dispositivos en la red local (LAN)?
- Android: AndroidHttpClient - ¿cómo establecer el tiempo de espera?
- ¿Cómo hacer que el dispositivo Android mantenga una conexión TCP a Internet sin bloqueo de la sesión?
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);