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能解决中文乱码问题和设定接口响应时间问题