0

SSL を使用する Web サイトに接続しようとしています。この接続は、プロキシ認証も必要とするプロキシ (squid) 経由です。

現在、アプリ内の接続に HttpsUrlConnection を使用していますが、可能であれば引き続きこれを使用したいと考えています。

この問題は、connection.open(" https://domain.com ") を使用して接続を行うときに発生します。HTTP CONNECT は、通常、"Proxy-Authentication" を含むヘッダーを設定する直前に送信されます。 getOutputStream が呼び出されるまで http 接続は何も送信されないため、このヘッダーを設定するだけで機能します。

これには、正しい名前とパスワードを返す defaultAuthenticator を設定できます。ただし、これには 2 つの問題があります。

  1. アプリケーションは、未知の他のアプリケーションを含む Web サーバー内で実行されている Web アプリケーションです。デフォルトのオーセンティケーターを設定すると、他のアプリケーションに影響しますか? (同じ理由で、システムプロパティの設定はアウトです)

  2. また、異なる接続で異なるプロキシを使用する機能も必要です。たとえば、proxy1.domain.com に接続する接続と、proxy2.domain.com に接続する別の接続があり、それぞれが異なる資格情報を持っている場合があります。

これを達成する正しい方法は何ですか?広く使用されている HttpUrlConnection でこれが不可能だったとしたら、非常に驚​​くでしょう。

4

2 に答える 2

1

私が完全に誤解していなければ、これはJVMURLConnectionとその仲間を使って達成することはできません。さらに、重大なバグとメモリリークに関する実績を考えると、かなり前から企業のブラックリストに載っています。

ApacheHttpClientを使用します。

質問1に関しては、一般に、それぞれClassLoaderにクラスの独自のコピーとクラスの静的メンバーがあります。はJVMクラスであるため、アプリケーションAuthenticatorの親(の1つ)によってロードされると想定します。これにより、JVM内にクラスのコピーが1つだけ存在することが保証されます。ClassLoaderClassLoaderAuthenticator

于 2013-02-20T21:48:10.437 に答える
0

を設定しjava.net.Authenticatorます。

于 2013-02-20T23:22:47.717 に答える