HttpClient 入门使用示例

一、前言

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

HttpClient作用是什么?

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

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

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

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

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

<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpclient</artifactId>
	<version>4.5.13</version>
</dependency>

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

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
</dependency>

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();

    }

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

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

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

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();


    }

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿追

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值