HttpClient

HttpClient

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器
 
使用HttpClient 实现get请求:
  //创建一个默认的链接
        CloseableHttpClient client = HttpClients.createDefault();
        //创建一个请求
        HttpGet httpGet=new HttpGet("https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2020-02-05&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=CQW&purpose_codes=ADULT");
        //执行请求获取响应的结果
        CloseableHttpResponse response = client.execute(httpGet);
        //获取响应的状态码
        System.out.println("服务器返回状态码:"+response.getStatusLine().getStatusCode());
        //服务器正常响应
        if(response.getStatusLine().getStatusCode()==200){
            //获取响应结果
            System.out.println(EntityUtils.toString(response.getEntity(),"UTF-8"));
        }
        //关闭结果对象
        response.close();
        //关闭链接
        client.close();

  

使用HttpClient 实现post请求:

做一个post请求的服务端:

package com.wish;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/HttpClientWeb")
public class HttpClientWeb extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取数据
        String userName =req.getParameter("userName");
        System.out.println("接受的数据:"+userName);
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write("服务器正确接收到数据");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
}

  

使用post请求

   //创建链接
        CloseableHttpClient client = HttpClients.createDefault();
        //创建请求
        HttpPost post=new HttpPost("http://localhost:8080/HttpClientWeb");
        //创建参数队列
        List<NameValuePair> pairList=new ArrayList<>();
        pairList.add(new BasicNameValuePair("userName","张三"));
        //创建请求体,封装参数
        UrlEncodedFormEntity entity=new UrlEncodedFormEntity(pairList,"UTF-8");
        //将请求体交给当前请求
        post.setEntity(entity);

        //发送请求,接收结果
        CloseableHttpResponse response = client.execute(post);
        System.out.println("接收到的结果为:"+ EntityUtils.toString(response.getEntity(),"UTF-8"));


        //关闭资源
        response.close();
        client.close();

  

原文地址:https://www.cnblogs.com/wishsaber/p/12263592.html