访问外部http接口
博客简介
在 springBoot 后台中,发起 http 的 get、post 请求,编写 HttpUtil 工具类,记录代码
一、引入类库
在 pom
文件中引入 httpclient
类库
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
二、编写工具类
编写程序请求中所需的请求 工具类
package com.water.common.utils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* @ClassName: HttpClient
* @Description: http的请求工具类
* @version V1.0
*/
@Service
public class HttpClientUtil {
public String client(String url, HttpMethod method, MultiValueMap<String, String> params) {
RestTemplate template = new RestTemplate();
ResponseEntity<String> responseEntity = template.getForEntity(url, String.class);
return responseEntity.getBody();
}
}
三、调用实例
在application.properties 中配置http的访问地址
url.userrights=http://127.0.0.1:8082/
编写请求的调用实例
// api地址
@Value("${url.userrights}")
private String userRightsUrl;
@Autowired
private HttpClientUtil httpClient;
@Override
public String testConnection(String json) throws Exception {
String url = "xxx/api?abc=1";
HttpMethod method = HttpMethod.GET;
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
String apiUrl = userRightsUrl + url
String result = httpClient.client(apiUrl, method, params);
System.out.println(result);
return result;
}
四、附http工具类
附一个请求类型和参数更多的 http请求
工具类,供大家参考
package com.water.utils;
import java.util.List;
import org.apache.commons.beanutils.DynaBean;
import org.aspectj.weaver.ast.Var;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.water.common.utils.DynaBeanPluginsUtil;
import com.water.common.utils.JsonPluginsUtil;
import com.water.common.utils.Util;
/**
* @ClassName: HttpClient
* @Description: http的请求工具类
* @version V1.0
*/
@Service
public class HttpClientUtil {
/**
* @Title: client
* @Description: 普通get方式
* @param @param url
* @param @param method
* @param @param params
* @param @return
* @return String
* @version V1.0
*/
public String clientGet(String url) {
RestTemplate template = new RestTemplate();
ResponseEntity<String> responseEntity = template.getForEntity(url, String.class);
return responseEntity.getBody();
}
/**
* @Title: clientWithHeader
* @Description: 带有单个header的获取方式
* @param @param url
* @param @param method
* @param @param params
* @param @return
* @return String
* @version V1.0
*/
public String clientGet(String url, String hKey, String hVal) {
RestTemplate template = new RestTemplate();
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add(hKey, hVal);
HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders);
ResponseEntity<String> responseEntity = template.exchange(url, HttpMethod.GET, requestEntity, String.class);
return responseEntity.getBody();
}
/**
* @Title: client
* @Description: 带有多个header的获取方式
* @param @param url
* @param @param method
* @param @param params
* @param @param hList
* @param @return
* @return String
* @version V1.0
*/
public String client(String url, HttpMethod method, MultiValueMap<String, String> params,
List<DynaBean> hList) {
RestTemplate template = new RestTemplate();
HttpHeaders requestHeaders = new HttpHeaders();
for(DynaBean dynaBean : hList) {
String hKey = Util.toString(dynaBean.get("key"));
String hVal = Util.toString(dynaBean.get("val"));
requestHeaders.add(hKey, hVal);
}
HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders);
ResponseEntity<String> responseEntity = template.exchange(url, method, requestEntity, String.class);
return responseEntity.getBody();
}
/**
* @Title: clientPost
* @Description: 发送post的http请求
* @param @param url
* @param @param params
* @param @return
* @return String
* @version V1.0
*/
public String clientPost(String url, String json){
RestTemplate client = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
HttpMethod method = HttpMethod.POST;
// 以表单的方式提交
headers.setContentType(MediaType.APPLICATION_JSON);
//将请求头部和参数合成一个请求
HttpEntity<String> requestEntity = new HttpEntity<>(json, headers);
//执行HTTP请求,将返回的结构使用ResultVO类格式化
ResponseEntity<String> response = client.exchange(url, method, requestEntity, String.class);
return response.getBody();
}
}