ThreadSafeClientConnManagerとHttpParamsをコンストラクタに渡して新しいHttpClientを作成していますが、常に不正なリクエストエラーが発生します。 何がうまくいかなかったかを理解するために、私はそれをデバッグしましたが、すべて無駄でした。私は私のコードそれがあるにg_client.execute(postMethod);
を呼び出したときに、いくつかの解決策を私に提供することは ここに私のコードブロックHttpClient 4.0でHttpParamsオブジェクトを設定する
sc.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
sc.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
HttpParams basicParams = new BasicHttpParams();
ThreadSafeClientConnManager connmgr = new ThreadSafeClientConnManager(basicParams, sc);
ConnManagerParams.setMaxConnectionsPerRoute(
basicParams,
// if we have more than 5 concurrent leads, good problem to have
new ConnPerRoute() {
public int getMaxForRoute(HttpRoute httproute) {
return 5;
}
});
g_client = new DefaultHttpClient(connmgr, basicParams);
// It's a lead, be forgiving with timeout
g_client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
g_client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
ConnManagerParams.setTimeout(basicParams, 2000);
では、400ステータスコードが何かが私の要求が間違っていることを示しています。私は私のDefaultHttpClientコンストラクタ
g_client = new DefaultHttpClient(connmgr, null);
にnullを渡すと、クライアントが正常に実行されているが、私は基本的paramはmaxconnectionperroute
を設定する必要があるとして、それは正しい方法ではありません。私は疑わしいコードをここに貼り付けました。見て、私を助けてください。私はここで立ち往生している。
私はHttpClient 4.0バージョンを使用しています。
では、ApacheのHttpClientの、このような古いバージョンを使用しているいずれかの特定の理由はありますか? – oleg
このHTTPクライアント・バージョンのみをサポートするWebSphereサーバー(正確なバージョンはわかりません)を使用している理由の1つだけです。 –