HttpClient 入门使用示例

一、前言

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

HttpClient作用是什么?

答:发送HTTP请求、接收响应数据

为什么要在Java程序中发送Http请求?有哪些应用场景呢?

答:扫描支付、查看地图、获取验证码、查看天气等功能

其实,应用程序本身并未实现这些功能,都是在应用程序里访问提供这些功能的服务,访问这些服务需要发送HTTP请求,并且接收响应数据,可通过HttpClient来实现。

我们要使用HttpClient要导入相应的maven坐标:


	org.apache.httpcomponents
	httpclient
	4.5.13

注:如果你的项目之前导入过 aliyun-sdk-oss 的maven坐标,这里就不需要导入HttpClient了,因为aliyun-sdk-oss李爱你包含了HttpClient坐标了。


    com.aliyun.oss
    aliyun-sdk-oss

HttpClient的核心API有哪些?

HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。

HttpClients:可认为是构建器,可创建HttpClient对象。

CloseableHttpClient:实现类,实现了HttpClient接口。

HttpGet:Get方式请求类型。

HttpPost:Post方式请求类型。

HttpClient发送请求步骤

1、创建HttpClient对象

2、创建Http请求对象

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

二、入门案例

我们编写测试代码,发送GET请求。

首先HttpClients调用createDefault方法来创建HttpClient对象,然后new一个 Http请求对象,调用HttpClient的execute方法发送请求。然后在response里面getEntity()来解析数据,然后再将entity转为String 然后输出,最后记得关闭资源。

1、GET方式请求

实现步骤:

1、创建HttpClient对象

2、创建请求对象

3、发送请求,接受响应结果

4、解析结果

5、关闭资源

    @Test
    public void testGet() throws IOException {
        // 创建HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建Http请求对象
        HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
        // 调用HttpClient的execute方法发送请求
        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 入门使用示例_第1张图片

getStatusLine()方法返回保存请求状态的StatusLine对象。

entityutils.tostring方法是一个实体工具类,主要用于对实体类进行操作。

这里将response.getStatusLine()与entity直接输出,看看输出的结果是啥?

HttpClient 入门使用示例_第2张图片

2、POST方式请求

在HttpClientTest中添加POST方式请求方法,相比GET请求来说,POST请求若携带参数需要封装请求体对象,并将该对象设置在请求对象中。

实现步骤:

  1. 创建HttpClient对象

  2. 创建请求对象

  3. 发送请求,接收响应结果

  4. 解析响应结果

  5. 关闭资源

同样的也是先创建HttpClient对象,然后创建Http请求对象,然后设置需要传过去的Json数据,然后设置entity对象的数据,再设置数据的格式,后面httpClient调用方法execute,发送请求,然后获取状态码,输出;然后在response拿出Entity,再转为string 输出,最后关闭资源。

    @Test
    public void testPost() throws Exception {
        // 创建HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建Http请求对象
        HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");

        // 设置json数据
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("username","admin");
        jsonObject.put("password","123456");

        // 设置entity对象的数据
        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();
        httpPost.clone();


    }

你可能感兴趣的:(Java合集,1024程序员节)