9

HTTPリクエストを行うJavaアプリケーションを開発していますが、開発時間の半分はプロキシの背後にあります。したがって、コードには次のブロックがあります。

if (BEHIND_PROXY) {
    java.util.Properties systemProperties = System.getProperties();
    systemProperties.setProperty("http.proxyHost", PROXY_HOST);
    systemProperties.setProperty("http.proxyPort", PROXY_PORT);
}

アイデアは、私がBEHIND_PROXYどこにいるかに基づいての値を変更することです。私は今日、プロキシの背後ではなくBEHIND_PROXY作業していて、に設定するのを忘れていましたfalse。ただし、接続は引き続き正常に行われ、アプリケーションは要求されたデータを受信しました。これはどのように可能ですか?これに組み込まれているものはありますか?プロキシサーバーに到達できない場合、プロキシサーバーは単に再試行しますが、この再試行でプロキシをバイパスしますか?

そして2番目の質問ですが、私はシステムプロパティの完全なリストを見つけようとしています。私はこれのような多くの投稿を見つけましたが、それらのリストやの1つではなく、明らかに完全ではないと思います。どういうわけか間違って検索していますか?これらのプロパティはこれらの他のリストに属していますか?どこかにもっと完全なリストがありますか?http.proxyHosthttp.proxyPorthttp.x

4

1 に答える 1

11

プロキシ サーバーに到達できない場合、単純に再試行するが、この再試行でプロキシをバイパスするという、これに組み込まれているものはありますか?

はい。

これを見て驚きましたが、内部接続のソース: sun.net.www.protocol.http.HttpURLConnectionにあります。760 行目で、利用可能なすべてのプロキシを試しても接続に失敗した場合は、プロキシを使用しない接続を試みます。

どういうわけか間違って検索していますか?

多分。善悪を問わず、Java の哲学では、システム プロパティはその場しのぎのものであり、その存在を知る唯一の方法は、それが影響するもののドキュメントを読むことです。この場合、HttpURLConnection はNetworking Propertiesのページにリンクします。

于 2013-03-08T17:10:07.903 に答える