SSLConnectionSocketFactory线程在GET期间无限期地被阻塞

时间:2016-10-18 10:02:41

标签: java multithreading

有时我的线程在握手期间被阻止..我正在使用http-client 4.4.1。下面是我的GET代码。如何为此设置超时?

public HttpResponseBean get(String url, Map<String, String> headers) throws Exception {
    logger.debug("Sending get request...");

    HttpClient httpClient = null;
    try {
        int timeout = 30 * 1000; // 30 seconds
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(timeout)
                .setConnectionRequestTimeout(timeout)
                .setSocketTimeout(timeout).build();
        httpClient = HttpClients.custom()
                .setDefaultRequestConfig(requestConfig).build();
        HttpGet httpGetRequest = new HttpGet(url);

        if (headers != null) {
            for (Entry<String, String> entry: headers.entrySet()) {
                httpGetRequest.addHeader(new BasicHeader(entry.getKey(), entry.getValue()));
            }
        }

        HttpResponse response = httpClient.execute(httpGetRequest);
        HttpResponseBean hrb = new HttpResponseBean(response);
        logger.debug("Get response: Response: " + hrb.toString());
        return hrb;
    } finally {
        closeConnection(httpClient);
    }
}

0 个答案:

没有答案