2012-07-16 20 views
6

私のアプリケーションにはプロキシを設定しないという条件が必要です。そのために私は次のコードを使用:プロキシを使用しないAndroidは動作しませんか?

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

をしかし、私はネットワーク到達不能例外が発生しました!!

助けてください!

+0

問題の詳細を教えていただけますか?シナリオは何ですか?エミュレータまたはデバイス上で失敗しますか?または両方 ?あなたのネットワーク環境は何ですか? – fiddler

+0

こんにちは、私の目的は、プロキシと非プロキシ環境を使用してサーバーに接続することです。私はアンドロイドデバイス上でアプリケーションを実行しており、接続はwifiで行われます。 – info

答えて

5

あなたの質問を誤解していない場合... 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.上記のコードスニペットでは、エラー処理が一部行われない場合があります。ありがとう;)

関連する問題