HttpClient入门

242 阅读2分钟

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

HttpClient作用:模块客户端向服务器发送HTTP请求

  • 发送HTTP请求
  • 接收响应数据

HttpClient应用场景: 一般用于调用第三方接口 当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时


HttpClient的maven坐标:

org.apache.httpcomponents httpclient 4.5.13

HttpClient的核心API:

  • HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
  • HttpClients:可认为是构建器,可创建HttpClient对象。
  • CloseableHttpClient:实现类,实现了HttpClient接口。
  • HttpGet:Get方式请求类型。
  • HttpPost:Post方式请求类型。

HttpClient发送请求步骤:

  • 创建HttpClient对象
  • 创建Http请求对象
  • 调用HttpClient的execute方法发送请求

发送get请求代码演示:

/**
* java模拟浏览器向服务器发送Get请求
* @throws Exception
*/
@Test
public void htTest() throws Exception{
    //创建httpclient对象
    CloseableHttpClient httpClient = HttpClients.createDefault();

    //创建请求对象
    HttpGet request = new HttpGet("http://localhost:8080/admin/shop/status");
    request.setHeader("token", "eyJhbGciOiJIUzI1NiJ9.eyJlbXBJZCI6MSwiZXhwIjoxNzAwMzAyMzc1fQ.gUFqsNg44ezAGauLEGUw0cuQ3hzGeZw-uJUVcmwo-ik");

    //发送请求,获取响应
    CloseableHttpResponse response = httpClient.execute(request);

    //获取服务端返回的状态码
    int statusCode = response.getStatusLine().getStatusCode();
    System.out.println("服务端返回的状态码:" + statusCode);

    HttpEntity entity = response.getEntity();
    String body = EntityUtils.toString(entity);
    System.out.println("服务端返回的数据为:" + body);

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

}

发送post请求代码演示:

   /**
    * 测试HttpClient发送post请求
    * @throws Exception
    */
@Test
public void postTest() throws Exception{
    CloseableHttpClient httpClient = HttpClients.createDefault();
    //构造post请求对象
    HttpPost request = new HttpPost("http://localhost:8080/admin/employee/login");
    //构造POST请求对象
    EmployeeLoginDTO employeeLoginDTO = new EmployeeLoginDTO();
    employeeLoginDTO.setUsername("admin");
    employeeLoginDTO.setPassword("123456");
    //把对象转化成josh格式
    String json = JSON.toJSONString(employeeLoginDTO);
    StringEntity entity = new StringEntity(json);
    entity.setContentType("application/json");
    entity.setContentEncoding("UTF-8");
    request.setEntity(entity);
   CloseableHttpResponse response = httpClient.execute(request);
    int code = response.getStatusLine().getStatusCode();
    System.out.println("服务端返回的状态码:" + code);

    HttpEntity entity1 = response.getEntity();
    String data = EntityUtils.toString(entity1);
    System.out.println("服务端返回的数据为:" +data);

    //关闭资源
    response.close();
    httpClient.close();
}