【问题标题】:Using HTTPClientParams for HttpClient 4.5为 HttpClient 4.5 使用 HTTPClientParams
【发布时间】:2018-01-12 21:55:19
【问题描述】:

我有一个使用 HTTPClientParams 的 HttpClient 3.x 代码。

HttpClientParams params = new HttpClientParams();
params.setVersion(HttpVersion.HTTP_1_1);
params.setContentCharset(ENCODING);
try {
        URI uri = new URI(some-resource);
        int port = uri.getPort();
        Protocol protocol = null;
        if(port == -1){
            if(uri.getScheme().compareToIgnoreCase("http") == 0){
                port = 80;
                protocol = Protocol.getProtocol("http");
            }
            else if(uri.getScheme().compareToIgnoreCase("https") == 0){
                port = 443;
                protocol = Protocol.getProtocol("https");
            }
        }
        Protocol.registerProtocol(uri.getScheme(), protocol);
        HttpConnectionManager manager = new SimpleHttpConnectionManager();
        HttpClient client = new HttpClient(manager);
        client.setParams(params);

我已经验证 HTTPClient 4.5 没有 HTTPParam 方法。我怎样才能升级相同?有其他选择吗?

【问题讨论】:

    标签: httpclient apache-httpclient-4.x


    【解决方案1】:

    请看RequestConfig

    这段代码应该和你上面的代码大致等价

    CloseableHttpClient client = HttpClientBuilder.create()
            .setConnectionManager(new BasicHttpClientConnectionManager())
            .setDefaultRequestConfig(RequestConfig
                    .custom()
                    // Add custom request parameters
                    .build())
            .build();
    URI uri = new URI(some - resource);
    HttpGet httpGet = new HttpGet(uri);
    httpGet.setProtocolVersion(HttpVersion.HTTP_1_1);
    try (CloseableHttpResponse response1 = client.execute(httpGet)) {
        EntityUtils.toString(response1.getEntity(), Charset.forName(ENCODING));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多