1

Android 2.3.4 で動作する Samsung Galaxy S Plus Phone を使用しています。

[設定] -> [ワイヤレスとネットワーク] -> [Wi-Fi 設定] -> [メニュー ボタン] -> [詳細] パネルで、電話のプロキシ サーバーとポートを手動で設定しました。

私の電話はまだプロキシを使用して通信できません。ブラウザを試しましたが、プロキシ設定を利用できません。

public static InputStream inputStreamForUrl(URL url) throws IOException {

        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // doesn't work on android 2.3.4
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoInput(true);
        urlConnection.setConnectTimeout(30000);
        urlConnection.setReadTimeout(30000);
        System.out.println(urlConnection.usingProxy());
        urlConnection.connect();
        return urlConnection.getInputStream();
}

ただし、コードでプロキシを手動でハードコードすると、機能します

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.server.url", 8080));// this needs to be hard coded to make it work in 2.3
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(proxy);// this needs to be hard coded to make it work in 2.3

システムプロキシを動的に見つけてコードで使用しようとしましたが、

private static void getProxySettings()
    {
        final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= 14;

        String proxyAddress = "";
        int proxyPort = 0;

        if( IS_ICS_OR_LATER )
        {
            proxyAddress = System.getProperty( "http.proxyHost" );

            String portStr = System.getProperty( "http.proxyPort" );
            proxyPort = Integer.parseInt( ( portStr != null ? portStr : "-1" ) );
        }
        else
        {
            proxyAddress = android.net.Proxy.getHost( ctx );
            proxyPort = android.net.Proxy.getPort( ctx );
        }



        System.out.println(proxyAddress);
        System.out.println(proxyPort);
    }

ただし、プロキシ アドレスとポートは常に null です。

誰か助けてください

PS。Android 4.1/4.2/4.3 デバイスではまったく問題ありません

4

0 に答える 0