欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 接口调用工具-HttpClient,HttpUtil,RestTemplate

接口调用工具-HttpClient,HttpUtil,RestTemplate

2024/10/25 12:22:27 来源:https://blog.csdn.net/qq_49474843/article/details/142522050  浏览:    关键词:接口调用工具-HttpClient,HttpUtil,RestTemplate

文章目录

  • 一、HttpClient
    • 1. 介绍
    • 2. Get请求方式
    • 3. Post请求方式
  • 二、RestTemplate
  • 三、Hutool工具包 --- HttpUtil


一、HttpClient

1. 介绍

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

HttpClient作用:

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

HttpClient应用场景:

  • 当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时

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

HttpClient的maven坐标:

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

HttpClient的核心API:

  • HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。
  • HttpClients:可认为是构建器,可创建HttpClient对象。
  • CloseableHttpClient:实现类,实现了HttpClient接口。
  • HttpGet:Get方式请求类型。 (url?name=lisi)
  • HttpPost:Post方式请求类型。 (url,body StringEntity)
    HttpClient发送请求步骤:
  • 创建HttpClient对象
  • 创建Http请求对象
  • 调用HttpClient的execute方法发送请求

2. Get请求方式

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

上述依赖的底层已经包含了HttpClient相关依赖。
实现步骤:

  1. 创建HttpClient对象
  2. 创建请求对象
  3. 发送请求,接受响应结果
  4. 解析结果
  5. 关闭资源
package com.sky.test;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class HttpClientTest {/*** 测试通过httpclient发送GET方式的请求*/@Testpublic void testGET() throws Exception{//创建httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建请求对象HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");//发送请求,接受响应结果CloseableHttpResponse response = httpClient.execute(httpGet);//获取服务端返回的状态码   getStatusLine()获取响应行int statusCode = response.getStatusLine().getStatusCode();System.out.println("服务端返回的状态码为:" + statusCode);HttpEntity entity = response.getEntity();//获取响应体//借用EntityUtils工具类toString方法将其转为Json字符串String body = EntityUtils.toString(entity); System.out.println("服务端返回的数据为:" + body);//关闭资源response.close();httpClient.close();}
}//该请求同样可以封装请求参数,但注意必须使用Map<String,String>Map<String,String> map = new HashMap<>();map.put("appid",weChatProperties.getAppid());map.put("secret",weChatProperties.getSecret());map.put("js_code",code);map.put("grant_type","authorization_code");//发送请求String string = HttpClientUtil.doGet(WX_LOGIN, map);//解析结果String openid = JSONUtil.parseObj(string).getStr("openid");

3. Post请求方式

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

  1. 创建HttpClient对象
  2. 创建请求对象
  3. 发送请求,接收响应结果
  4. 解析响应结果
  5. 关闭资源
	/*** 测试通过httpclient发送POST方式的请求*/@Testpublic void testPOST() throws Exception{// 创建httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建请求对象HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");//请求体  封装成什么类型无所谓  但是下面调用new StringEntity()封装时//必须转为JSON字符串 (与setContentType("application/json")保持一致)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();}

二、RestTemplate

Template这个后缀的类都是Spring提供的工具类
RestTemplate

在这里插入图片描述

三、Hutool工具包 — HttpUtil

  1. 请求—HttpUtil工具类 这里列举普通的get,post请求
    在这里插入图片描述
  2. 解析
    • java对象转JSON字符串
    • JSON字符串解析

JSON字符串转JSONObject进行解析 。 获取JSON字符串对象属性 getXxx(“属性名”) Xxx为类型

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com