java 後臺傳送http請求
阿新 • • 發佈:2019-02-05
package com.swa.utils; import java.io.*; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; public class HttpUtils { public String sendGet(String url, String param) { String result = ""; BufferedReader bufferedReader = null; try { // 設定通用的請求屬性 URLConnection connection = initConnection(url, param, "get"); // 建立實際的連線 connection.connect(); // 獲取所有響應頭欄位 Map<String, List<String>> map = connection.getHeaderFields(); // 遍歷所有的響應頭欄位 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定義 BufferedReader輸入流來讀取URL的響應 InputStream inputStream = connection.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); bufferedReader = new BufferedReader(inputStreamReader); String line; while (null != (line = bufferedReader.readLine())) { result += line; } } catch(Exception e) { String message = "傳送GET請求出現異常!請求地址:" + url; } finally { try { if (null != bufferedReader) { bufferedReader.close(); } } catch (Exception e2) { String message = "http get請求關閉輸入流異常!請求地址:" + url; System.out.println(message); } } return result; } public String sendPost(String url, String param) { PrintWriter out = null; BufferedReader bufferedReader = null; String result = ""; try { URLConnection conn = initConnection(url, param, "post"); // 傳送POST請求必須設定如下兩行 conn.setDoOutput(true); conn.setDoInput(true); // 獲取URLConnection物件對應的輸出流 out = new PrintWriter(conn.getOutputStream()); // 傳送請求引數 out.print(param); // flush輸出流的緩衝 out.flush(); // 定義BufferedReader輸入流來讀取URL的響應 InputStream inputStream = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); bufferedReader = new BufferedReader(inputStreamReader); String line; while (null != (line = bufferedReader.readLine())) { result += line; } } catch (Exception e) { String message = "傳送 POST 請求出現異常!請求地址:" + url; System.out.println(message); e.printStackTrace(); System.out.println(e.getMessage()); } finally { try { if (null != out) { out.close(); } if (null != bufferedReader) { bufferedReader.close(); } } catch (IOException ex) { String message = "http post請求關閉輸入流異常!請求地址:" + url; ex.printStackTrace(); System.out.println(message); } } return result; } private URLConnection initConnection(String url, String param, String method) throws IOException { String urlNameString = url; if(method.equals("get")){ if (null != param) { urlNameString = url + "?" + param; } } else { urlNameString = url; } URL realUrl = new URL(urlNameString); // 開啟和URL之間的連線 URLConnection connection = realUrl.openConnection(); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); connection.setRequestProperty("Accept-Charset", "utf-8"); connection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); connection.setRequestProperty("partnertoken", "ARS57BOZX0LC05GHYN"); return connection; } }