我在使用以下代码中获得apache httpclient(4.3)邮政请求时遇到困难:
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(4000).setConnectTimeout(4000)
.setSocketTimeout(4000).build();
CloseableHttpClient client = HttpClients.custom().setSslcontext(sslContext)
.setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
.setDefaultRequestConfig(requestConfig).build();
HttpPost post = new HttpPost("https://localhost:" + connection.getLocalPort() + "/API/webservice.asmx");
StringEntity stringE = new StringEntity(REQUEST);
post.setEntity(stringE);
CloseableHttpResponse response = client.execute(post);
我正在通过专有API获取连接和端口。但是,当一切顺利时,这有时(由于连接不良,我相信)代码永远存在于client.ecute(post)。在实施超时或其他一些使该调用的方法时,我在这里做错了什么,所以我不会无限期地卡住。
这是httpclient 4.3中HTTPS连接的错误。在尝试SSL握手之前,未在套接字上设置套接字超时。握手期间,线程可能会挂在插座上。httpclient 4.2没有此错误。