HttpClient的基本使用

108 阅读1分钟

一、HttpClient的基本信息:

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

简单的说:

  1. 核心API:• HttpClient • HttpClients • CloseableHttpClient • HttpGet • HttpPost

  2. 发送请求步骤: 1.创建HttpClient对象

    ​ 2.创建Http请求对象

    ​ 3.调用HttpClient的execute方法发送请求

二、使用步骤:

1.引入依赖:

<dependency>
2    <groupId>org.apache.httpcomponents</groupId>
3    <artifactId>httpclient</artifactId>
4    <version>4.5.13</version>
5</dependency>

2.编码规范:

  • 创建httpclient对象
  • 创建请求对象
  • 发送请求,接受响应结果
  • 获取服务端返回的状态码
  • 关闭资源

3.案例:

//@SpringBootTest //声明是一个Spring Test
public class HttpClientTest {

    /**
     * 测试通过httpclient发送GET方式的请求
     */
    @Test
    public void testGET() throws Exception {
		//创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

		//创建请求对象
        HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");

		//发送请求,接受响应结果
        CloseableHttpResponse response = httpClient.execute(httpGet);

		//获取服务端返回的状态码
        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();
    }


    /**
     * 测试通过httpclient发送POST方式的请求
     */
    @Test
    public void testPOST() throws Exception {
		// 创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

		//创建请求对象
        HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("username", "admin");
        jsonObject.put("password", "123456");

        StringEntity entity = new StringEntity(jsonObject.toString());
		//指定请求编码方式
        entity.setContentEncoding("utf-8");
		//数据格式
        entity.setContentType("application/json");
        httpPost.setEntity(entity);

		//发送请求
        CloseableHttpResponse response = httpClient.execute(httpPost);

        //解析返回结果
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println("响应码为:" + statusCode);

        HttpEntity entity1 = response.getEntity();
        String body = EntityUtils.toString(entity1);
        System.out.println("响应数据为:" + body);

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