2012-07-16 68 views
6

Tôi cần điều kiện không đặt proxy trong ứng dụng của mình; cho rằng tôi sử dụng đoạn mã sau:Android không có Proxy không hoạt động?

URL url = null; 

try { 
    url = new URL(uri.toURL().toString()); 
} catch (MalformedURLException e3) { 
    e3.printStackTrace(); 
} 

try { 
    //client = (HttpURLConnection) url.openConnection(java.net.Proxy.NO_PROXY); 
    Properties systemProperties = System.getProperties(); 

    systemProperties.setProperty("http.nonProxyHosts",ServerIP); 
    systemProperties.setProperty("proxySet", "false"); 
    systemProperties.setProperty("http.proxyHost",""); 
    systemProperties.setProperty("http.proxyPort",""); 
    URLConnection conn = url.openConnection(Proxy.NO_PROXY); 


    conn.connect(); 
} catch (IOException e3) { 
    e3.printStackTrace(); 
} 

Nhưng tôi đã mạng unreachable ngoại lệ !!

Bất kỳ trợ giúp nào !!

+0

Bạn có thể cung cấp thêm chi tiết về sự cố của mình không? Kịch bản là gì? Liệu nó thất bại trên giả lập hoặc trên một thiết bị? hoặc cả hai ? Môi trường mạng của bạn là gì? – fiddler

+0

Xin chào, Mục tiêu của tôi là kết nối với máy chủ bằng proxy và môi trường không phải proxy. Tôi đang chạy ứng dụng trên thiết bị Android và kết nối được thực hiện thông qua wifi. – info

Trả lời

5

Nếu tôi không hiểu sai câu hỏi của bạn ... Bạn muốn kết nối trực tiếp với máy chủ khi kết nối qua WIFI?

HttpURLConnection con =null; 
URL url = new URL("xxxxx"); 
boolean isProxy=true; 

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
if(cm!=null){ 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    if(ni!=null){ 
     if(! ni.getTypeName().equals("WIFI")){ 
      isProxy=false; 
     } 
     if(isProxy){ 
      Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress(android.net.Proxy.getDefaultHost(),android.net.Proxy.getDefaultPort())); 
      con = (HttpURLConnection) url.openConnection(proxy); 
     }else{ 
      con = (HttpURLConnection) url.openConnection(); 
     } 
    } 
} 

p.s. Xin lưu ý rằng đoạn mã ở trên có thể bỏ sót một số lỗi xử lý. Cảm ơn;)

Các vấn đề liên quan