Jerseyクライアントにプロキシサーバを設定したいと思います。
(http.proxyHostなどのJVM引数を使用して)アプリケーション全体にプロキシを設定する必要はなく、Apacheクライアントを使用しないでください。
here私はHttpUrlConnectionFactoryを介してHttpUrlConnection を提供することによってそれを行うオプションがあると読んでいますが、コード例は見つかりませんでした。
どのようにすればいいですか?
ありがとうございます!Jerseyクライアントへのプロキシの設定
答えて
を試してみて、私はそれが行われました:
は私の実装が(ルカのおかげで)で、 'getHttpURLConnection' HttpURLConnectionFactoryを実装し、メソッドをオーバーライドします。
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 3128));
return new HttpURLConnection(url, proxy);
Befo Jersey Clientをインスタンス化し、新しい
URLConnectionClientHandler
を作成し、そのコンストラクタにHttpURLConnectionFactory
を提供します。その後、新しいClientを作成し、ClientHandlerをClientコンストラクタに提供します。私のコード:
URLConnectionClientHandler urlConnectionClientHandler = new URLConnectionClientHandler(new MyHttpURLConnectionFactory());
_client = new Client(urlConnectionClientHandler);
希望の助け。すべての
ルカの助けを借りて
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
conn = new URL(url).openConnection(proxy);
現在、私は 'Client.create(config)'を使っています。クライアントの作成時に 'UrlConnection'を使用するオプションが見つかりませんでした。 – danieln
まず私は
import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
/**
*
* @author Aimable
*/
public class ConnectionFactory implements HttpURLConnectionFactory {
Proxy proxy;
String proxyHost;
Integer proxyPort;
SSLContext sslContext;
public ConnectionFactory() {
}
public ConnectionFactory(String proxyHost, Integer proxyPort) {
this.proxyHost = proxyHost;
this.proxyPort = proxyPort;
}
private void initializeProxy() {
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
}
@Override
public HttpURLConnection getHttpURLConnection(URL url) throws IOException {
initializeProxy();
HttpURLConnection con = (HttpURLConnection) url.openConnection(proxy);
if (con instanceof HttpsURLConnection) {
System.out.println("The valus is....");
HttpsURLConnection httpsCon = (HttpsURLConnection) url.openConnection(proxy);
httpsCon.setHostnameVerifier(getHostnameVerifier());
httpsCon.setSSLSocketFactory(getSslContext().getSocketFactory());
return httpsCon;
} else {
return con;
}
}
public SSLContext getSslContext() {
try {
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[]{new SecureTrustManager()}, new SecureRandom());
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
} catch (KeyManagementException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
return sslContext;
}
private HostnameVerifier getHostnameVerifier() {
return new HostnameVerifier() {
@Override
public boolean verify(String hostname,
javax.net.ssl.SSLSession sslSession) {
return true;
}
};
}
}
が、私はまたSecureTrustManager
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
/**
*
* @author Aimable
*/
public class SecureTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
public boolean isClientTrusted(X509Certificate[] arg0) {
return true;
}
public boolean isServerTrusted(X509Certificate[] arg0) {
return true;
}
}
と呼ばれる別のクラスを作成し、このクラスを作成した後、作成私はこの
URLConnectionClientHandler cc = new URLConnectionClientHandler(new ConnectionFactory(webProxy.getWebserviceProxyHost(), webProxy.getWebserviceProxyPort()));
client = new Client(cc);
client.setConnectTimeout(2000000);
のようなクライアントを呼んでいるこのクラスの後
あなたのproxyHostとwebProxy.getWebserviでwebProxy.getWeserviceHostを置き換えてくださいceProxyPort()をプロキシポートで指定します。
これは私のために働いたし、あなたのためにも動作するはずです。私はJersey 1.8を使用していますが、Jersey 2でも動作するはずです。
ありがとうございました。 – whoami
- 1. bambooリモートエージェントへのプロキシ設定
- 2. HTTPクライアント用にプロキシを設定する
- 3. リモートサーバーへのクライアント証明書認証を実行するプロキシの設定
- 4. Jersey APIクライアント側の認証ヘッダーの設定
- 5. JerseyとApache Httpクライアントでプロキシ認証を使用するには?
- 6. Dropwizard/Jersey - 設定ファイルのサービスドメイン
- 7. Teamcityのプロキシ設定
- 8. ブラケット、プロキシの設定
- 9. yii2-httpクライアントの基本認証とプロキシ設定
- 10. Flash Playerのプロキシ設定の設定
- 11. Neo4jのJerseyクライアントの例マニュアル
- 12. Nginxプロキシ設定
- 13. Pythonプロキシ設定
- 14. OkHttpプロキシ設定
- 15. Jerseyクライアントの応答ステータス204
- 16. Jersey Rxクライアントjersey-client-async-executor shutdown
- 17. Spring Jersey Web App - 設定
- 18. 設定Swagger-ui with Jersey
- 19. Jersey 2 POSTへのデータストリームをチャンクで呼び出すクライアント
- 20. OAuth2RestTemplateでのプロキシ設定
- 21. Nginxの動的プロキシ設定
- 22. .NET WebBrowserのプロキシ設定
- 23. google pubsubのプロキシ設定
- 24. Android SDKのプロキシ設定
- 25. app.configのIMプロキシ設定
- 26. pleskのVarnish + Nginxプロキシ設定
- 27. Pythonリクエストモジュールのプロキシ設定
- 28. Rabbitmq Javaクライアントのプロキシ
- 29. Nginxの設定を外部IPとポート(https - > http)へのプロキシへのパス
- 30. Swagger Core Jersey 2.Xプロジェクトの設定1.5
これはJava 6以降でのみ動作することに注意してください。ProxyでのHttpURLConnectionコンストラクタはJava 5では使用できません。 –