【发布时间】:2013-09-04 12:18:44
【问题描述】:
我正在创建新的 HttpClient,通过在它的构造函数中传递 ThreadSafeClientConnManager 和 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);
当我在我的代码中调用 g_client.execute(postMethod); 时,它显示 400 状态代码意味着我的请求有问题。如果我在 DefaultHttpClient 构造函数中传递 null
g_client = new DefaultHttpClient(connmgr, null);
客户端正在成功执行,但这不是正确的方法,因为我需要基本参数集maxconnectionperroute。我在这里粘贴了可疑的代码。请看看并帮助我。我被困在这里了。
我使用的是 HttpClient 4.0 版本。
【问题讨论】:
-
您使用这种过时版本的 Apache HttpClient 有什么特别的原因吗?
-
只是一个原因,因为我使用的 WebSphere 服务器(不知道确切的版本)只支持这个 httpclient 版本。
标签: java apache-httpclient-4.x