httpclient请求参数设置

2016-03-17|来源:

httpclient的请求参数主要是通过RequestConfig封装,然后通过httpGet.setConfig(config);把RequestConfig对象传进来


RequestConfig有以下成员变量,基本都有相应的set方法

   private final boolean expectContinueEnabled;
   private final HttpHost proxy;
   private final InetAddress localAddress;
   private final boolean staleConnectionCheckEnabled;
   private final String cookieSpec;
   private final boolean redirectsEnabled;
   private final boolean relativeRedirectsAllowed;
   private final boolean circularRedirectsAllowed;
   private final int maxRedirects;
   private final boolean authenticationEnabled;
   private final Collection<String> targetPreferredAuthSchemes;
   private final Collection<String> proxyPreferredAuthSchemes;
   private final int connectionRequestTimeout;
   private final int connectTimeout;
   private final int socketTimeout;


例如:

setConnectTimeout 设置连接超时时间
setConnectionRequestTimeout 设置连接请求最长时间
setSocketTimeout 数据传输的最长时间
setStaleConnectionCheckEnabled 提交请求前测试连接是否可用


示例:

package com._656463.httpclient;
 
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
 
public class RequestConfigDemo {
 
    public static void main(String[] args) throws Exception {
 
        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
 
        // 创建http GET请求
        HttpGet httpGet = new HttpGet("http://www.baidu.com/");
 
        // 构建请求配置信息
        RequestConfig config = RequestConfig.custom().setConnectTimeout(1000) // 创建连接的最长时间
                .setConnectionRequestTimeout(500) // 从连接池中获取到连接的最长时间
                .setSocketTimeout(10 * 1000) // 数据传输的最长时间
                .setStaleConnectionCheckEnabled(true) // 提交请求前测试连接是否可用
                .build();
        // 设置请求配置信息
        httpGet.setConfig(config);
 
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpclient.execute(httpGet);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                System.out.println(content);
            }
        } finally {
            if (response != null) {
                response.close();
            }
            httpclient.close();
        }
    }
}

本文参考网络


相关问答

更多

如何使用HttpClient包实现JAVA发起HTTP请求

HttpClient可以发起Http请求. 比如要获取某页面, 那么需要分析, 是POST请求还是GET请求. 分析请求的标题头 ,参数 ,cookie等, 所以 , 分析页面请求, 才是关键, 分析好了, 直接按套路,设置标头, 设置参数, 设置cookie, 然后提交POST/GET就可以了 推荐win10自带的EDGE浏览器, 按F12弹出开发窗口, 里面详细记录了http请求

java HttpClient设置代理的话,用户名和密码怎么设置?

使用代理需要导入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。 在连接代理时需要使用用户名和密码构造UsernamePasswordCredentials对象并作为参数传递给HttpClient对象。 具体用法如下: public static void main(String args[]) { StringBuffer sb = new S ...

如何使用httpclient访问网络

使用Apache HttpClient访问网络 package com.szy.news.service; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.en ...

Spring3 MVC请求参数获取的几种方法

1、 通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String name, ModelMap model) { System.out.println(id); System.out.println(name); model.addAt ...

如何设置合理的mysql的参数

[client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql pid-file = /data/mysql/mysql.pid user = mysql bind-address = 0.0.0.0 server-id = 1 #表示是本机的序号为1,一般来讲就是master的意思 ...

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
快速入门
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多