java 手搓一个http工具类请求传body
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class HttpUtil {
/**
* JSON请求发起
*/
public static String httpJsonRequest(String requestUrl, String requestJson) {
String responseJson = "";
try {
URL url = new URL(requestUrl);
// 打开和URL之间的连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
PrintWriter out = null;
// 设置通用的请求属性
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
conn.setRequestProperty("accept", "*/*");
conn.setDoOutput(true); // 设置是否向connection输出
conn.setDoInput(true); // 设置是否从connection读取
conn.setConnectTimeout(50000); // 连接超时时间
conn.setReadTimeout(50000); // 读取超时时间
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
conn.setUseCaches(false); // 禁止缓存
// 设置请求方式(支持 POST, PUT, DELETE)
conn.setRequestMethod("POST"); // 设置请求方式为传入的method
// 如果是POST, PUT, DELETE请求,向请求体中写入数据
conn.setDoOutput(true);
// out.println(obj);
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8));
out.println(requestJson);
// out.print(requestJson); // 将JSON数据写入请求体
out.flush();
// 获取响应数据
InputStream is = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
StringBuffer result = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
result.append(line);
}
responseJson = result.toString();
// 关闭流
is.close();
br.close();
// 断开连接
conn.disconnect();
return responseJson;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
【好处】这个http能解决中文乱码问题和设定接口响应时间问题