找回密码
 立即注册
查看: 169|回复: 0

HttpClient,httpclient应用场景扫描支付、查看地图、获取验证码、查看天气等功能

[复制链接]

156

主题

5

精华

160

金币

技术维护QQ:515138

积分
345
发表于 2025-12-22 09:22:38 | 显示全部楼层 |阅读模式
HttpClient,httpclient应用场景扫描支付、查看地图、获取验证码、查看天气等功能
HttpClient的maven坐标:
  1. <dependency>
  2.         <groupId>org.apache.httpcomponents</groupId>
  3.         <artifactId>httpclient</artifactId>
  4.         <version>4.5.13</version>
  5. </dependency>
复制代码
HttpClient的核心API:
  • HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
  • HttpClients:可认为是构建器,可创建HttpClient对象。
  • CloseableHttpClient:实现类,实现了HttpClient接口。
  • HttpGet:Get方式请求类型。
  • HttpPost:Post方式请求类型。

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


入门案例
对HttpClient编程工具包有了一定了解后,那么,我们使用HttpClient在Java程序当中来构造Http的请求,并且把请求发送出去,接下来,就通过入门案例分别发送GET请求POST请求,具体来学习一下它的使用方法。
1.2.1 GET方式请求
正常来说,首先,应该导入HttpClient相关的坐标,但在项目中,就算不导入,也可以使用相关的API。
因为在项目中已经引入了aliyun-sdk-oss坐标:
  1. <dependency>
  2.     <groupId>com.aliyun.oss</groupId>
  3.     <artifactId>aliyun-sdk-oss</artifactId>
  4. </dependency>
复制代码
上述依赖的底层已经包含了HttpClient相关依赖。
1.jpg
案例测试:
  1. package com.zidiu;
  2. import org.apache.http.HttpEntity;
  3. import org.apache.http.client.methods.CloseableHttpResponse;
  4. import org.apache.http.client.methods.HttpGet;
  5. import org.apache.http.impl.client.CloseableHttpClient;
  6. import org.apache.http.impl.client.HttpClients;
  7. import org.apache.http.util.EntityUtils;
  8. import org.junit.jupiter.api.Test;
  9. import org.springframework.boot.test.context.SpringBootTest;
  10. @SpringBootTest
  11. public class HttpClientTest {
  12.     /**
  13.      * 测试通过httpclient发送GET方式的请求
  14.      */
  15.     @Test
  16.     public void testGET() throws Exception{
  17.         //创建httpclient对象
  18.         CloseableHttpClient httpClient = HttpClients.createDefault();
  19.         //创建请求对象
  20.         HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
  21.         //发送请求,接受响应结果
  22.         CloseableHttpResponse response = httpClient.execute(httpGet);
  23.         //获取服务端返回的状态码
  24.         int statusCode = response.getStatusLine().getStatusCode();
  25.         System.out.println("服务端返回的状态码为:" + statusCode);
  26.         HttpEntity entity = response.getEntity();
  27.         String body = EntityUtils.toString(entity);
  28.         System.out.println("服务端返回的数据为:" + body);
  29.         //关闭资源
  30.         response.close();
  31.         httpClient.close();
  32.     }
  33. }
复制代码
源代码运行输出结果如下:
2.jpg
1.2.2 POST方式请求
在HttpClientTest中添加POST方式请求方法,相比GET请求来说,POST请求若携带参数需要封装请求体对象,并将该对象设置在请求对象中。
实现步骤:
  • 创建HttpClient对象
  • 创建请求对象
  • 发送请求,接收响应结果
  • 解析响应结果
  • 关闭资源

  1. /**
  2.      * 测试通过httpclient发送POST方式的请求
  3.      */
  4.     @Test
  5.     public void testPOST() throws Exception{
  6.         // 创建httpclient对象
  7.         CloseableHttpClient httpClient = HttpClients.createDefault();
  8.         //创建请求对象
  9.         HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");
  10.         JSONObject jsonObject = new JSONObject();
  11.         jsonObject.put("username","admin");
  12.         jsonObject.put("password","123456");
  13.         StringEntity entity = new StringEntity(jsonObject.toString());
  14.         //指定请求编码方式
  15.         entity.setContentEncoding("utf-8");
  16.         //数据格式
  17.         entity.setContentType("application/json");
  18.         httpPost.setEntity(entity);
  19.         //发送请求
  20.         CloseableHttpResponse response = httpClient.execute(httpPost);
  21.         //解析返回结果
  22.         int statusCode = response.getStatusLine().getStatusCode();
  23.         System.out.println("响应码为:" + statusCode);
  24.         HttpEntity entity1 = response.getEntity();
  25.         String body = EntityUtils.toString(entity1);
  26.         System.out.println("响应数据为:" + body);
  27.         //关闭资源
  28.         response.close();
  29.         httpClient.close();
  30.     }
复制代码

完全代码如下:
  1. package com.zidiu;
  2. import com.alibaba.fastjson.JSONObject;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.client.methods.CloseableHttpResponse;
  5. import org.apache.http.client.methods.HttpGet;
  6. import org.apache.http.client.methods.HttpPost;
  7. import org.apache.http.entity.StringEntity;
  8. import org.apache.http.impl.client.CloseableHttpClient;
  9. import org.apache.http.impl.client.HttpClients;
  10. import org.apache.http.util.EntityUtils;
  11. import org.junit.jupiter.api.Test;
  12. import org.springframework.boot.test.context.SpringBootTest;
  13. @SpringBootTest
  14. public class HttpClientTest {
  15.     /**
  16.      * 测试通过httpclient发送GET方式的请求
  17.      */
  18.     @Test
  19.     public void testGET() throws Exception{
  20.         //创建httpclient对象
  21.         CloseableHttpClient httpClient = HttpClients.createDefault();
  22.         //创建请求对象
  23.         HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
  24.         //发送请求,接受响应结果
  25.         CloseableHttpResponse response = httpClient.execute(httpGet);
  26.         //获取服务端返回的状态码
  27.         int statusCode = response.getStatusLine().getStatusCode();
  28.         System.out.println("服务端返回的状态码为:" + statusCode);
  29.         HttpEntity entity = response.getEntity();
  30.         String body = EntityUtils.toString(entity);
  31.         System.out.println("服务端返回的数据为:" + body);
  32.         //关闭资源
  33.         response.close();
  34.         httpClient.close();
  35.     }
  36.     /**
  37.      * 测试通过httpclient发送POST方式的请求
  38.      */
  39.     @Test
  40.     public void testPOST() throws Exception{
  41.         // 创建httpclient对象
  42.         CloseableHttpClient httpClient = HttpClients.createDefault();
  43.         //创建请求对象
  44.         HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");
  45.         JSONObject jsonObject = new JSONObject();
  46.         jsonObject.put("username","admin");
  47.         jsonObject.put("password","123456");
  48.         StringEntity entity = new StringEntity(jsonObject.toString());
  49.         //指定请求编码方式
  50.         entity.setContentEncoding("utf-8");
  51.         //数据格式
  52.         entity.setContentType("application/json");
  53.         httpPost.setEntity(entity);
  54.         //发送请求
  55.         CloseableHttpResponse response = httpClient.execute(httpPost);
  56.         //解析返回结果
  57.         int statusCode = response.getStatusLine().getStatusCode();
  58.         System.out.println("响应码为:" + statusCode);
  59.         HttpEntity entity1 = response.getEntity();
  60.         String body = EntityUtils.toString(entity1);
  61.         System.out.println("响应数据为:" + body);
  62.         //关闭资源
  63.         response.close();
  64.         httpClient.close();
  65.     }
  66. }
复制代码



上一篇:Spring Data Redis使用方式
下一篇:springboot3之微信小程序开发
网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

QQ|Archiver|自丢网 ( 粤ICP备2024252464号-1 )

GMT+8, 2026-1-19 13:47

专注于网站建设,公众号小程序制作,商城小程序,系统定制,软件App开发

【联系我们】手机/微信:17817817816 QQ:515138

快速回复 返回顶部 返回列表