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能解決中文亂碼問題和設定接口響應時間問題