java發送http請求

java發送http請求
  1. package com.stock.show.util;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.io.PrintWriter;  
  7. import java.net.URL;  
  8. import java.net.URLConnection;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11.   
  12. public class HttpRequestUtil {  
  13.   
  14.     /** 
  15.      * 向指定URL發送GET方法的請求 
  16.      * 
  17.      * @param url 
  18.      *            發送請求的URL 
  19.      * @param param 
  20.      *            請求參數 
  21.      * @return URL 所代表遠程資源的響應結果 
  22.      */  
  23.     public static String sendGet(String url, Map<String,String> param) {  
  24.         String result = "";  
  25.         BufferedReader in = null;  
  26.         try {  
  27.             String urlNameString = url;  
  28.   
  29.             //增加參數  
  30.             if(param!=null&¶m.size()>0){  
  31.                 urlNameString = urlNameString+"?";  
  32.                 for(String key : param.keySet()){  
  33.                     urlNameString = urlNameString + key + "=" + param.get(key);  
  34.                 }  
  35.             }  
  36.   
  37.             URL realUrl = new URL(urlNameString);  
  38.             // 打開和URL之間的連接  
  39.             URLConnection connection = realUrl.openConnection();  
  40.             // 設置通用的請求屬性  
  41.             connection.setRequestProperty("accept", "*/*");  
  42.             connection.setRequestProperty("connection", "Keep-Alive");  
  43.             connection.setRequestProperty("user-agent",  
  44.                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
  45.             // 建立實際的連接  
  46.             connection.connect();  
  47.             // 獲取所有響應頭字段  
  48.             Map<String, List<String>> map = connection.getHeaderFields();  
  49.             // 遍歷所有的響應頭字段  
  50.             for (String key : map.keySet()) {  
  51.                 System.out.println(key + "--->" + map.get(key));  
  52.             }  
  53.             // 定義 BufferedReader輸入流來讀取URL的響應  
  54.             in = new BufferedReader(new InputStreamReader(  
  55.                     connection.getInputStream()));  
  56.             String line;  
  57.             while ((line = in.readLine()) != null) {  
  58.                 result += line;  
  59.             }  
  60.         } catch (Exception e) {  
  61.             System.out.println("發送GET請求出現異常!" + e);  
  62.             e.printStackTrace();  
  63.         }  
  64.         // 使用finally塊來關閉輸入流  
  65.         finally {  
  66.             try {  
  67.                 if (in != null) {  
  68.                     in.close();  
  69.                 }  
  70.             } catch (Exception e2) {  
  71.                 e2.printStackTrace();  
  72.             }  
  73.         }  
  74.         return result;  
  75.     }  
  76.   
  77.     /**  
  78.      * 向指定 URL 發送POST方法的請求  
  79.      *  
  80.      * @param url  
  81.      *            發送請求的 URL  
  82.      * @param param  
  83.      *            請求參數  
  84.      * @return 所代表遠程資源的響應結果  
  85.      */  
  86.     public static String sendPost(String url, Map<String,String> param) {  
  87.         PrintWriter out = null;  
  88.         BufferedReader in = null;  
  89.         String result = "";  
  90.         try {  
  91.             URL realUrl = new URL(url);  
  92.             // 打開和URL之間的連接  
  93.             URLConnection conn = realUrl.openConnection();  
  94.             // 設置通用的請求屬性  
  95.             conn.setRequestProperty("accept", "*/*");  
  96.             conn.setRequestProperty("connection", "Keep-Alive");  
  97.             conn.setRequestProperty("user-agent",  
  98.                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
  99.             // 發送POST請求必須設置如下兩行  
  100.             conn.setDoOutput(true);  
  101.             conn.setDoInput(true);  
  102.             // 獲取URLConnection對象對應的輸出流  
  103.             out = new PrintWriter(conn.getOutputStream());  
  104.   
  105.             //處理參數  
  106.             String paramString = "";  
  107.             if(param!=null&¶m.size()>0){  
  108.                 for(String key : param.keySet()){  
  109.                     paramString = paramString + key + "=" + param.get(key);  
  110.                 }  
  111.             }  
  112.             // 發送請求參數  
  113.             out.print(paramString);  
  114.             // flush輸出流的緩衝  
  115.             out.flush();  
  116.             // 定義BufferedReader輸入流來讀取URL的響應  
  117.             in = new BufferedReader(  
  118.                     new InputStreamReader(conn.getInputStream()));  
  119.             String line;  
  120.             while ((line = in.readLine()) != null) {  
  121.                 result += line;  
  122.             }  
  123.         } catch (Exception e) {  
  124.             System.out.println("發送 POST 請求出現異常!"+e);  
  125.             e.printStackTrace();  
  126.         }  
  127.         //使用finally塊來關閉輸出流、輸入流  
  128.         finally{  
  129.             try{  
  130.                 if(out!=null){  
  131.                     out.close();  
  132.                 }  
  133.                 if(in!=null){  
  134.                     in.close();  
  135.                 }  
  136.             }  
  137.             catch(IOException ex){  
  138.                 ex.printStackTrace();  
  139.             }  
  140.         }  
  141.         return result;  
  142.     }  
  143.   
  144.     public static void main(String[] args) {  
  145.         //發送 GET 請求  
  146.         String s=HttpRequestUtil.sendGet("http://hq.sinajs.cn/list=sh601006", null);  
  147.         System.out.println(s);  
  148.   
  149.   
  150.     }  
  151.   
  152. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章