我正在创建新的 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);
客户端正在成功执行,但这不是正确的方法,因为我需要基本的 param set maxconnectionperroute
。我在这里粘贴了可疑的代码。请看看并帮助我。我被困在这里。
我正在使用 HttpClient 4.0 版本。