在項目中,有時需要通過請求遠程服務器上的url獲取數據(前提是程序所在服務器可以和url服務器ping成功),
用java在后台發送請求時,用到了java.net.URL, java.net.URLConnection,
以下是分別用post和get方式請求url的簡單工具類實現:

1 import java.io.BufferedReader; 2 import java.io.InputStreamReader; 3 import java.io.PrintWriter; 4 import java.net.URL; 5 import java.net.URLConnection; 6 import java.util.List; 7 import java.util.Map; 8 9 public class CallWebPage { 10 /** 11 * 用get方式連接url 12 * @param urlString url路徑 13 * @param pdata url參數 14 * @return 從url獲得的數據 15 */ 16 public static String CallWebPageGet(String urlString,String pdata) { 17 String result=""; 18 PrintWriter out = null; 19 BufferedReader in = null; 20 URL url=null; 21 try { 22 url = new URL(urlString+"?"+pdata);//用url路徑以及所用參數創建URL實例類 23 URLConnection connect = url.openConnection();//創建連接 24 connect.setRequestProperty("content-type","application/x-www-form-urlencoded;charset=utf-8");//設置請求header的屬性--請求內容類型 25 connect.setRequestProperty("method","GET");//設置請求header的屬性值--請求方式 26 // 建立實際的連接 27 connect.connect(); //建立與url所在服務器的連接 28 // 獲取所有響應頭字段 29 Map<String, List<String>> map = connect.getHeaderFields(); 30 // 遍歷所有的響應頭字段 31 for (String key : map.keySet()) { 32 System.out.println(key + "--->" + map.get(key)); 33 } 34 // 定義BufferedReader輸入流來讀取URL的響應 35 in = new BufferedReader(new InputStreamReader(connect.getInputStream())); 36 String line=""; 37 while ((line = in.readLine()) != null) { 38 result += line; 39 } 40 } catch (Exception e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } 44 45 return result; 46 } 47 /** 48 * 用gpost方式連接url 49 * @param urlString url路徑 50 * @param pdata url參數 51 * @return 從url獲得的數據 52 */ 53 public static String CallWebPagePost(String urlString,String pdata) { 54 String result=""; 55 PrintWriter out = null; 56 BufferedReader in = null; 57 URL url=null; 58 try { 59 url = new URL(urlString); 60 URLConnection connect = url.openConnection(); 61 connect.setRequestProperty("content-type","application/x-www-form-urlencoded;charset=utf-8"); 62 connect.setRequestProperty("method","POST"); 63 byte[] bytes= pdata.getBytes("utf-8") ; 64 connect.setDoOutput(true); 65 connect.setDoInput(true); 66 67 out = new PrintWriter(connect.getOutputStream()); 68 // 發送請求參數 69 out.print(pdata); 70 out.flush(); 71 // 定義BufferedReader輸入流來讀取URL的響應 72 in = new BufferedReader(new InputStreamReader(connect.getInputStream())); 73 String line; 74 while ((line = in.readLine()) != null) { 75 result += line; 76 } 77 } catch (Exception e) { 78 // TODO Auto-generated catch block 79 e.printStackTrace(); 80 } 81 82 return result; 83 } 84 }