Httpclient 设置读取超时及连接重试等配置 (转载)

private CloseableHttpClient buildHttpClient() {
        HttpClientBuilder cb = HttpClientBuilder
            .create()
            .disableAutomaticRetries()
            .setSSLHostnameVerifier(new NoopHostnameVerifier())
            .setRetryHandler(new DefaultHttpRequestRetryHandler(10, true))
            .setDefaultRequestConfig(
                RequestConfig.custom().setConnectTimeout(60 * 1000)
                    .setSocketTimeout(60 * 1000).build());

        try {
            // set ssl context
            SSLContext ctx = SSLContext.getInstance("TLS");
            ctx.init(null, new TrustManager[] { new X509TrustManager() {

                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                }

                @Override
                public void checkServerTrusted(X509Certificate[] arg0,
                        String arg1) {
                }

                @Override
                public void checkClientTrusted(X509Certificate[] arg0,
                        String arg1) {
                }
            } }, null);

            cb.setSslcontext(ctx);
        } catch (GeneralSecurityException ex) {
            throw new RuntimeException(ex);
        }

        if (this.getUsername() != null && this.getPassword() != null) {
            CredentialsProvider cp = new BasicCredentialsProvider();
            cp.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(
                this.getUsername(), this.getPassword()));
            cb.setDefaultCredentialsProvider(cp);
        }

        return cb.build();
    }

 

posted on 2016-03-08 13:57  hi_rain  阅读(4179)  评论(0)    收藏  举报