Http请求 工具类
导入依赖
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
工具类编写
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
* Http请求 工具类
* @author llp
* @date 2021年12月09日 21:06
*/
public class HttpUtils {
private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
/***
* 调用 GET 请求方法
* @author llp
* @date 2021/12/9 21:26
* @param url 请求地址
* @return java.lang.String
*/
public String doGet(String url){
CloseableHttpResponse response = null;
BufferedReader in = null;
HttpGet httpGet = new HttpGet();
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(10000)
.setConnectionRequestTimeout(10000)
.setSocketTimeout(10000)
.build();
httpGet.setConfig(requestConfig);
httpGet.addHeader("Content-type", "application/json; charset=utf-8");
httpGet.setHeader("Accept", "application/json");
String context = "";
try (CloseableHttpClient httpClient = HttpClients.createDefault()){
response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
context = EntityUtils.toString(entity, HTTP.UTF_8);
} catch (IOException e) {
logger.error("调用发生异常!");
e.printStackTrace();
} finally {
try{
if (response != null){
response.close();
}
httpGet.abort();
} catch (IOException e) {
logger.error("调用发生异常!");
e.printStackTrace();
}
}
return context;
}
/**
* 调用 POST 方法
* @author llp
* @date 2021/12/9 21:31
* @param url 请求地址
* @param data 参数(JSON)
* @return java.lang.String
*/
public String doPost(String url, String data){
CloseableHttpResponse response = null;
BufferedReader in = null;
HttpPost httpPost = new HttpPost();
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(10000)
.setConnectionRequestTimeout(10000)
.setSocketTimeout(10000)
.build();
httpPost.setConfig(requestConfig);
httpPost.addHeader("Content-type", "application/json; charset=utf-8");
httpPost.setHeader("Accept", "application/json");
httpPost.setEntity(new StringEntity(data, StandardCharsets.UTF_8));
String context = "";
try (CloseableHttpClient httpClient = HttpClients.createDefault()){
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
context = EntityUtils.toString(entity, HTTP.UTF_8);
} catch (IOException e) {
logger.error("调用发生异常!");
e.printStackTrace();
} finally {
try{
if (response != null){
response.close();
}
httpPost.abort();
} catch (IOException e) {
logger.error("调用发生异常!");
e.printStackTrace();
}
}
return context;
}
}