2012-01-11 20 views
5

Android emülatöründen internete erişmek için basit uygulamayı çalıştırmaya çalışıyorum ve işte benim kodum. Ben proxy arkasında ve emülatörde "... Kablosuz Ağlar -> APN -> ..." ile proxy ayarlarını yapılandırdım. Ancak internet, tarayıcıdan değil uygulamadan çalışıyor. aşağıdaki gibijava.net.SocketException: Adres aile android emülatöründe protokol tarafından desteklenmiyor

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

LogCat hata günlüğüne bir parçasıdır:

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 

ben forumda arama yaptıktan sonra aşağıdaki seçenekleri denedik ama hiçbiri çalışma görünüyor: android olarak

  1. başlatma seçenekleri -http-proxy sunucusu kullandım: bağlantı noktası -dns sunucusu sunucusu

  2. Ben hav E manifest dosyasında internet izinleri dahil

    kullanır-izin android: name = "android.permission.INTERNET"

    uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
    
  3. birisi

     java.lang.System.setProperty("java.net.preferIPv4Stack", "true"); 
    java.lang.System.setProperty("java.net.preferIPv6Addresses", "false"); 
    
  4. önerdi sonra ipv4 yığın kullanabilmek için sistem özellikleri ayarlayın

Android 2.2 ve Windows Vista üzerinde çalışıyorum, lütfen bana yardım edin ...

+0

Tarayıcı Emülatörde düzgün çalışıyor mu? –

+0

@LalitPoptani evet tarayıcı, emülatörde iyi çalışıyor –

cevap

0

Sadece .....

connection.setConnectTimeout(timeoutInMillisecs); 

Muhtemelen bunu kurmadığını r yapmaya çalışıyoruz. yanı AndroidManifest.xml bu ekleme

+0

Bunu denedim ama hala kullanmam. –

+0

İyi, ---------- HttpConnectionParams.setConnectionTimeout (client.getParams(), CONNECTION_TIMEOUT) kullanmayı deneyin; \t \t \t HttpConnectionParams.setSoTimeout (client.getParams(), SOCKET_TIMEOUT); –

0

deneyin: Ayrıca bu özel durumu yakalamak için gereken

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

: onCreate içinde programlı proxy ve bağlantı noktasını ayarlamak için

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

Bunu denedikten sonra, yerel adresler için çalışıyor (proxy arkasında). Yine de harici adresler çalışmıyor .. –

+6

http://stackoverflow.com/questions/7854300/java-net-socketexception-address-family-not-supported-by-protocol adresinden çalındı – Will

0

deneyin() gibi Bu

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

bu deneyin:

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); 
İlgili konular