Java類比http請求遠程調用介面工具類

來源:互聯網
上載者:User

標籤:msi   request   lis   stack   tpc   prope   IV   print   pac   

package ln;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 用於類比HTTP請求中GET/POST方式  * @author landa * */public class HttpUtils {      /**      * 發送GET請求      *       * @param url      *            目的地址      * @param parameters      *            請求參數,Map類型。      * @return 遠程響應結果      */      public static String sendGet(String url, Map<String, String> parameters) {         String result="";        BufferedReader in = null;// 讀取響應輸入資料流          StringBuffer sb = new StringBuffer();// 儲存參數          String params = "";// 編碼之後的參數        try {            // 編碼請求參數              if(parameters.size()==1){                for(String name:parameters.keySet()){                    sb.append(name).append("=").append(                            java.net.URLEncoder.encode(parameters.get(name),                              "UTF-8"));                }                params=sb.toString();            }else{                for (String name : parameters.keySet()) {                      sb.append(name).append("=").append(                              java.net.URLEncoder.encode(parameters.get(name),                                      "UTF-8")).append("&");                  }                  String temp_params = sb.toString();                  params = temp_params.substring(0, temp_params.length() - 1);              }            String full_url = url + "?" + params;             System.out.println(full_url);             // 建立URL對象              java.net.URL connURL = new java.net.URL(full_url);              // 開啟URL串連              java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL                      .openConnection();              // 設定通用屬性              httpConn.setRequestProperty("Accept", "*/*");              httpConn.setRequestProperty("Connection", "Keep-Alive");              httpConn.setRequestProperty("User-Agent",                      "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");              // 建立實際的串連              httpConn.connect();              // 回應標頭部擷取              Map<String, List<String>> headers = httpConn.getHeaderFields();              // 遍曆所有的回應標頭欄位              for (String key : headers.keySet()) {                  System.out.println(key + "\t:\t" + headers.get(key));              }              // 定義BufferedReader輸入資料流來讀取URL的響應,並設定編碼方式              in = new BufferedReader(new InputStreamReader(httpConn                      .getInputStream(), "UTF-8"));              String line;              // 讀取返回的內容              while ((line = in.readLine()) != null) {                  result += line;              }          } catch (Exception e) {            e.printStackTrace();        }finally{            try {                  if (in != null) {                      in.close();                  }              } catch (IOException ex) {                  ex.printStackTrace();              }          }        return result ;    }        /**      * 發送POST請求      *       * @param url      *            目的地址      * @param parameters      *            請求參數,Map類型。      * @return 遠程響應結果      */      public static String sendPost(String url, Map<String, String> parameters) {          String result = "";// 返回的結果          BufferedReader in = null;// 讀取響應輸入資料流          PrintWriter out = null;          StringBuffer sb = new StringBuffer();// 處理請求參數          String params = "";// 編碼之後的參數          try {              // 編碼請求參數              if (parameters.size() == 1) {                  for (String name : parameters.keySet()) {                      sb.append(name).append("=").append(                              java.net.URLEncoder.encode(parameters.get(name),                                      "UTF-8"));                  }                  params = sb.toString();              } else {                  for (String name : parameters.keySet()) {                      sb.append(name).append("=").append(                              java.net.URLEncoder.encode(parameters.get(name),                                      "UTF-8")).append("&");                  }                  String temp_params = sb.toString();                  params = temp_params.substring(0, temp_params.length() - 1);              }              // 建立URL對象              java.net.URL connURL = new java.net.URL(url);              // 開啟URL串連              java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL                      .openConnection();              // 設定通用屬性              httpConn.setRequestProperty("Accept", "*/*");              httpConn.setRequestProperty("Connection", "Keep-Alive");              httpConn.setRequestProperty("User-Agent",                      "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");              // 設定POST方式              httpConn.setDoInput(true);              httpConn.setDoOutput(true);              // 擷取HttpURLConnection對象對應的輸出資料流              out = new PrintWriter(httpConn.getOutputStream());              // 發送請求參數              out.write(params);              // flush輸出資料流的緩衝              out.flush();              // 定義BufferedReader輸入資料流來讀取URL的響應,設定編碼方式              in = new BufferedReader(new InputStreamReader(httpConn                      .getInputStream(), "UTF-8"));              String line;              // 讀取返回的內容              while ((line = in.readLine()) != null) {                  result += line;              }          } catch (Exception e) {              e.printStackTrace();          } finally {              try {                  if (out != null) {                      out.close();                  }                  if (in != null) {                      in.close();                  }              } catch (IOException ex) {                  ex.printStackTrace();              }          }          return result;      }        /**      * 主函數,測試請求      *       * @param args      */      public static void main(String[] args) {          Map<String, String> parameters = new HashMap<String, String>();          parameters.put("name", "sarin");          String result =sendGet("http://www.baidu.com", parameters);        System.out.println(result);     }  }  

Java類比http請求遠程調用介面工具類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.