package com.fzzy.igds.utils;
|
|
import lombok.extern.slf4j.Slf4j;
|
import java.io.*;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
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;
|
}
|
|
/**
|
*
|
* @param url
|
* @param jsonStr
|
* @return
|
* @throws Exception
|
*/
|
public static String doPost(String url, Map<String, String> herderParams, String jsonStr) throws Exception {
|
log.debug("---------接口请求地址:" + url + "----------参数:" + jsonStr + "---------");
|
BufferedReader in = null;
|
URL urls = new URL(url);
|
HttpURLConnection conn = null;
|
OutputStream outputStream = null;
|
String rs = "";
|
try {
|
// 打开和URL之间的连接
|
conn = (HttpURLConnection) urls.openConnection();
|
|
// 设置通用的请求属性
|
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
|
conn.setRequestProperty("Accept", "*/*");
|
conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");
|
conn.setRequestProperty("connection", "Keep-Alive");
|
conn.setRequestMethod("POST");
|
conn.setUseCaches(false);
|
|
// 发送POST请求必须设置如下两行
|
conn.setDoOutput(true);
|
conn.setDoInput(true);
|
conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
|
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
|
|
//设置请求头
|
if (null != herderParams) {
|
for (String s : herderParams.keySet()) {
|
conn.setRequestProperty(s, herderParams.get(s));
|
}
|
}
|
outputStream = conn.getOutputStream();
|
|
outputStream.write(jsonStr.getBytes("UTF-8"));
|
try {
|
conn.connect();
|
if (conn.getResponseCode() == 200) {
|
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
|
String line = "";
|
while ((line = in.readLine()) != null) {
|
rs += line;
|
}
|
} else {
|
log.error("http状态:" + conn.getResponseCode());
|
log.error("http消息:" + conn.getResponseMessage());
|
}
|
|
} catch (Exception e) {
|
System.out.println("发生异常");
|
log.error(e.getMessage(), e);
|
rs = null;
|
log.debug("---------接口返回:" + rs + "---------");
|
return rs;
|
}
|
log.debug("---------接口返回:" + rs + "---------");
|
return rs;
|
} finally {
|
try {
|
outputStream.close();
|
if (in != null) {
|
in.close();
|
}
|
} catch (Exception e) {
|
}
|
outputStream = null;
|
if (conn != null)
|
conn.disconnect();
|
conn = null;
|
}
|
}
|
|
}
|