package com.ld.igds.util;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.http.HttpEntity;
|
import org.apache.http.NameValuePair;
|
import org.apache.http.client.ResponseHandler;
|
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
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.BasicResponseHandler;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.HttpClients;
|
import org.apache.http.message.BasicNameValuePair;
|
import org.apache.http.util.EntityUtils;
|
|
import java.io.*;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
//Http请求的工具类
|
@Slf4j
|
public class HttpUtils {
|
|
private static final int TIMEOUT_IN_MILLIONS = 5000;
|
|
/**
|
* Get请求,获得返回数据
|
*
|
* @param urlStr
|
* @return
|
* @throws Exception
|
*/
|
public static String doGet(String urlStr) {
|
URL url = null;
|
HttpURLConnection conn = null;
|
InputStream is = null;
|
ByteArrayOutputStream baos = null;
|
try {
|
url = new URL(urlStr);
|
conn = (HttpURLConnection) url.openConnection();
|
conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
|
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
|
conn.setRequestMethod("GET");
|
conn.setRequestProperty("accept", "*/*");
|
conn.setRequestProperty("connection", "Keep-Alive");
|
conn.setRequestProperty("Content-Type", "application/json");
|
if (conn.getResponseCode() == 200) {
|
is = conn.getInputStream();
|
baos = new ByteArrayOutputStream();
|
int len = -1;
|
byte[] buf = new byte[128];
|
|
while ((len = is.read(buf)) != -1) {
|
baos.write(buf, 0, len);
|
}
|
baos.flush();
|
return baos.toString();
|
} else {
|
throw new RuntimeException(" responseCode is not 200 ... ");
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
|
} finally {
|
try {
|
if (is != null)
|
is.close();
|
} catch (IOException e) {
|
}
|
try {
|
if (baos != null)
|
baos.close();
|
} catch (IOException e) {
|
}
|
conn.disconnect();
|
}
|
|
return null;
|
|
}
|
|
/**
|
* 向指定 URL 发送POST方法的请求
|
*
|
* @param url 发送请求的 URL
|
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
|
* @return 所代表远程资源的响应结果
|
* @throws Exception
|
*/
|
public static String doPost(String url, String param) {
|
OutputStream outputStream = null;
|
BufferedReader in = null;
|
String result = "";
|
try {
|
URL realUrl = new URL(url);
|
// 打开和URL之间的连接
|
HttpURLConnection conn = (HttpURLConnection) realUrl
|
.openConnection();
|
// 设置通用的请求属性
|
conn.setRequestProperty("accept", "*/*");
|
conn.setRequestProperty("connection", "Keep-Alive");
|
conn.setRequestMethod("POST");
|
conn.setRequestProperty("Content-Type",
|
"application/x-www-form-urlencoded");
|
conn.setRequestProperty("charset", "utf-8");
|
conn.setUseCaches(false);
|
// 发送POST请求必须设置如下两行
|
conn.setDoOutput(true);
|
conn.setDoInput(true);
|
conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
|
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
|
|
if (param != null && !param.trim().equals("")) {
|
outputStream = conn.getOutputStream();
|
// 注意编码格式
|
outputStream.write(param.getBytes("UTF-8"));
|
}
|
// 定义BufferedReader输入流来读取URL的响应
|
in = new BufferedReader(
|
new InputStreamReader(conn.getInputStream()));
|
String line;
|
while ((line = in.readLine()) != null) {
|
result += line;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
// 使用finally块来关闭输出流、输入流
|
finally {
|
try {
|
if (outputStream != null) {
|
outputStream.close();
|
}
|
if (in != null) {
|
in.close();
|
}
|
} catch (IOException ex) {
|
ex.printStackTrace();
|
}
|
}
|
return result;
|
}
|
|
|
/**
|
* @Desc:
|
*
|
* @author: Andy
|
* @update-time: 2022/11/26
|
*
|
*/
|
public static String doPost(String url, Map<String, String> paramsMap) {
|
CloseableHttpClient client = HttpClients.createDefault();
|
String responseText = "";
|
CloseableHttpResponse response = null;
|
try {
|
HttpPost method = new HttpPost(url);
|
if (paramsMap != null) {
|
List<NameValuePair> paramList = new ArrayList<>();
|
for (Map.Entry<String, String> param : paramsMap.entrySet()) {
|
NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue());
|
paramList.add(pair);
|
}
|
method.setEntity(new UrlEncodedFormEntity(paramList, "UTF-8"));
|
}
|
response = client.execute(method);
|
HttpEntity entity = response.getEntity();
|
if (entity != null) {
|
responseText = EntityUtils.toString(entity);
|
}
|
} catch (Exception e) {
|
log.error("http request failed", e);
|
} finally {
|
try {
|
response.close();
|
} catch (Exception e) {
|
log.error("", e);
|
}
|
}
|
return responseText;
|
}
|
|
public static String doGet(String url, Map<String, String> paramsMap) {
|
CloseableHttpClient client = HttpClients.createDefault();
|
String responseText = "";
|
CloseableHttpResponse response = null;
|
try {
|
String getUrl = url + "?";
|
if (paramsMap != null) {
|
for (Map.Entry<String, String> param : paramsMap.entrySet()) {
|
getUrl += param.getKey() + "=" + URLEncoder.encode(param.getValue(), "UTF-8") + "&";
|
}
|
}
|
HttpGet method = new HttpGet(getUrl);
|
response = client.execute(method);
|
HttpEntity entity = response.getEntity();
|
if (entity != null) {
|
responseText = EntityUtils.toString(entity);
|
}
|
} catch (Exception e) {
|
log.error("http request failed", e);
|
} finally {
|
try {
|
response.close();
|
} catch (Exception e) {
|
log.error("", e);
|
}
|
}
|
return responseText;
|
}
|
|
|
//post请求参数为json格式
|
public static String doPostJson(String url, String json) {
|
String returnValue = "这是默认返回值,接口调用失败";
|
CloseableHttpClient httpClient = HttpClients.createDefault();
|
ResponseHandler<String> responseHandler = new BasicResponseHandler();
|
try {
|
//第一步:创建HttpClient对象
|
httpClient = HttpClients.createDefault();
|
|
//第二步:创建httpPost对象
|
HttpPost httpPost = new HttpPost(url);
|
|
//第三步:给httpPost设置JSON格式的参数
|
StringEntity requestEntity = new StringEntity(json, "utf-8");
|
requestEntity.setContentEncoding("UTF-8");
|
httpPost.setHeader("Content-type", "application/json");
|
httpPost.setEntity(requestEntity);
|
|
//第四步:发送HttpPost请求,获取返回值
|
returnValue = httpClient.execute(httpPost, responseHandler); //调接口获取返回值时,必须用此方法
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
httpClient.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
//第五步:处理返回值
|
return returnValue;
|
}
|
|
}
|