说明:在项目中,我们有时会需要调用第三方接口,获取调用结果,来实现自己的业务逻辑。调用第三方接口,通常是双方确定好,由对方开放一个接口,需要我们根据他们提供的接口文档,组装Http请求的请求头(一般是秘钥,以便通过他们的校验),请求体(相关数据),在代码里主动发送一个Http请求,本文介绍在Spring Boot项目中发送Http请求的两种方式。
这里我以下面这个接口为例,该接口是一个公开的API(官网地址:https://www.mxnzp.com/doc/detail?id=35),可免费申请app_id、app_secret调用该接口,作用是根据传入的成语,返回该成语的拼音、解释、出处等信息。
接着,我们来试下在代码中如何调用。
方式一:RestTemplate
方式一是使用RestTemplate,如下:
/**
* 方式一:通过restTemplate发送Http请求
*/
@Test
public void sendHttp() {
// 创建RestTemplate对象
RestTemplate restTemplate = new RestTemplate();
// 请求地址
String url = "https://www.mxnzp.com/api/idiom/search";
// 请求参数
String key = "key=一心一意";
// 发送请求
Map result = restTemplate.getForObject(url + "?" + key + "&" + APP_ID + "&" + APP_SECRET, Map.class);
// 打印结果
System.out.println(result.get("data"));
}
如果是POST请求,可以用下面这种方式发送(以下代码是WeTab AI生成的,仅供参考,博主没试过)
// 创建RestTemplate实例
RestTemplate restTemplate = new RestTemplate();
// 设置请求URL
String url = "https://api.example.com/data";
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 设置请求体参数
String requestBody = "{\"param1\":\"value1\",\"param2\":\"value2\"}";
// 创建HttpEntity对象,并将请求头和请求体参数传递进去
HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);
// 发送POST请求并获取响应
String response = restTemplate.postForObject(url, requestEntity, String.class);
// 打印响应
System.out.println(response);
方式二:使用Hutool工具包
可以使用Hutool中的API,如下:
// 请求地址
String url = "https://www.mxnzp.com/api/idiom/search";
// 请求参数
String key = "key=一心一意";
// 发送请求
String result = HttpUtil.get(url + "?" + key + "&" + APP_ID + "&" + APP_SECRET);
// 打印结果
System.out.println(result);
如果是POST请求,可以使用对应的post方法,传入一个Map类型的数据,返回的也是String类型
另外可在后面设置一个int类型的数据,设置超时时间,单位毫秒
总结
本文总结了Spring Boot项目中发送Http请求的两种方式,参考下面这篇文章:
- SpringBoot项目模块间通信的两种方式