httpclient基本用法

  1. maven基础依赖

    org.apache.httpcomponents
    httpclient
    x.x.x

  2. HttpClient 的基本用法
    // 初始化httpclient
    CloseableHttpClient httpclient = HttpClients.createDefault();
    // 简单生成get请求
    HttpGet httpget = new HttpGet(“http://localhost/”);
    // 存放返回内容的类
    CloseableHttpResponse response = httpclient.execute(httpget);

    try{
    <…>
    } finally{
    response.close();
    }

  3. 生成 HTTP 请求
    方法一:
    HttpGet httpGet = new HttpGet(“http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq=”);

    方法二:
    URI uri = new URIBuilder()
    .setScheme(“http”)
    .setHost(“www.google.com”)
    .setPath("/search")
    .setParameter(“q”, “httpclient”)
    .setParameter(“btnG”, “Google Search”)
    .setParameter(“aq”, “f”)
    .setParameter(“oq”, “”)
    .build();
    HttpGet httpGet = new HttpGet(uri);

  4. 构建 HTTP 响应
    HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, “OK”);

    System.out.println(response.getProtocolVersiong());
    System.out.println(response.getStatusLine().getStatusCode());
    System.out.println(response.getStatusLine().getReasonPhrase());
    System.out.println(response.getStatusLine().toString());

  5. 添加信息头
    HttpResponse response = new BasicHttpResponse(HttpVersiong.HTTP_1_1, HttpStatus.SC_OK, “OK”);
    response.addHeader(“Set-Cookie”, “cl=a; path=/; domain=localhost”);
    response.addHeader(“Set-Cookie”, “cl=b; path=”/"; c3=c; domain=“localhost”");
    Header h1 = response.getFirstHeader(“Set-Cookie”);
    System.out.println(h1);
    Header h2 = response.getLastHeader(“Set-Cookie”);
    System.out.println(h2);
    Header[] hs = response.getHeaders(“Set-Cookie”);
    System.out.println(hs.length);

  6. 生成 HTTP 实体
    5.0 默认 HttpEntity entity1 = response1.getEntity();
    4.5版本
    string类型的实体
    StringEntity myEntity = new StringEntity(“important message”,
    ContentType.create(“text/plain”, “UTF-8”));

    System.out.println(myEntity.getContentType());
    System.out.println(myEntity.getContentLength());
    System.out.println(EntityUtils.toString(myEntity));
    System.out.println(EntityUtils.toByteArray(myEntity).length);

    file类型的实体
    File file = new File(“somefile.txt”);
    FileEntity entity = new FileEntity(file, ContentType.create(“text/plain”, “UTF-8”));

    HttpPost httppost = new HttpPost(“http://localhost/action.do”);
    httppost.setEntity(entity);

    表单类型的实体
    List formparams = new ArrayList();
    formparams.add(new BasicNameValuePair(“param1”, “value1”));
    formparams.add(new BasicNameValuePair(“param2”, “value2”));
    UrlEncodedFormEntity entity = new UrlEncodeFormEntity(formparams, Consts.UTF-8);
    HttpPost httppost = new HttpPost(“http://localhost/handler.do”);
    httppost.setEntity(entity);

  7. 确保 HTTP 实体被消耗
    EntityUtils.consume(entity1)

  8. HTTP代理
    方式一:
    HttpHost proxy = new HttpHost(“someproxy”, 8080);
    DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
    CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();
    方式二:
    SystemDefaultRoutePlanner routePlanner = new SystemDefaultRoutePlanner(ProxySelector.getDefault());
    CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();
    方式三:
    HttpRoutePlanner routePlanner = new HttpRoutePlanner(){
    public HttpRoute determineRoute(
    HttpHost target,
    HttpRequest request,
    HttpContext context ) throws HttpException {
    return new HttRoute(target, null, new HttpHost(“someproxy”, 8080), “https”.equalsIgnoreCase(target.getSchemeName()));
    }
    };

    CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();
    }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值