Java HttpClient SocketException& NoHttpResponseException

时间:2018-01-12 10:23:00

标签: java

我很简单。

代码:

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(200);
cm.closeExpiredConnections();
cm.closeIdleConnections(0, TimeUnit.SECONDS);
cm.setDefaultMaxPerRoute(50);
HttpHost localhost = new HttpHost(proxyStr, 80);
cm.setMaxPerRoute(new HttpRoute(localhost), 50);

HttpHost proxy = new HttpHost(ip, port);
routePlanner = new DefaultProxyRoutePlanner(proxy);
httpclient = HttpClients.custom()
            .setConnectionManager(cm)
            .setRetryHandler(new DefaultHttpRequestRetryHandler(0, true)) 
            .setDefaultCookieStore(cookieStore)
            .setRoutePlanner(routePlanner)
            .setConnectionReuseStrategy(new NoConnectionReuseStrategy())
            .build();
HttpPost httpPost = new HttpPost("https://*******);
List<NameValuePair> data = new ArrayList<NameValuePair>();
data.add(new BasicNameValuePair("DATA1", ***));
data.add(new BasicNameValuePair("DATA2", ***));

try {
    httpPost.setEntity(new UrlEncodedFormEntity(data, HTTP.ISO_8859_1));
} catch (Exception e) {

}

CloseableHttpResponse response2 = null;
try {
    response2 = httpclient.execute(httpPost);
} catch(Exception e)...

错误:

  

2018年1月12日上午8:43:40 org.apache.http.impl.execchain.RetryExec执行   INFO:处理{tls}请求时遇到的I / O异常(java.net.SocketException) - &gt; http://89.19.249.55:3128-&gt; https:// *****:连接重置

     

2018年1月12日上午8:43:40 org.apache.http.impl.execchain.RetryExec执行   信息:正在重试请求{tls} - &gt; http://89.19.249.55:3128-&gt; https:*****

     

2018年1月12日上午8:45:14 org.apache.http.impl.execchain.RetryExec执行   INFO:处理{tls}请求时遇到的I / O异常(org.apache.http.NoHttpResponseException) - &gt; http://184.178.217.66:3128-&gt; https:// *****:目标服务器无法响应< / p>

我已经通过抛出异常来扩展函数,但是我无法抓住它们。

我认为,因为它们是中断。

供您参考:

代码由~25个线程使用。 一个错误关闭一个线程。 如果线程关闭=我不能检查= /

所以25个错误和我的程序卡住......

希望有人知道如何解决这个问题= /

1 个答案:

答案 0 :(得分:0)

使用(https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/execchain/RetryExec.html

的信息

我想说,这个中断/异常是由httpclient.execute(httpPost)引发的

稍后我可以尝试修复并通知你。