1 package test; 2 3 import java.io.BufferedReader; 4 import java.io.DataOutputStream; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.net.HttpURLConnection; 8 import java.net.URL; 9 import java.net.URLEncoder; 10 11 import javax.servlet.http.HttpServletRequest; 12 13 import org.apache.http.HttpEntity; 14 import org.apache.http.HttpResponse; 15 import org.apache.http.client.ClientProtocolException; 16 import org.apache.http.client.methods.HttpGet; 17 import org.apache.http.client.methods.HttpPost; 18 import org.apache.http.client.utils.HttpClientUtils; 19 import org.apache.http.entity.StringEntity; 20 import org.apache.http.impl.client.DefaultHttpClient; 21 import org.apache.http.util.EntityUtils; 22 23 public class TestRequestUtil { 24 // public static void main(String[] args) { 25 // doGetStr("http://dzdzwxcs1.ciitc.com.cn/s/VcbrYFtK"); 26 // } 27 /** 28 * 接口調用 GET 29 */ 30 public static void httpURLConectionGET(String urls) { 31 try { 32 URL url = new URL(urls); // 把字符串轉換為URL請求地址 33 HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打開連接 34 connection.connect();// 連接會話 35 // 獲取輸入流 36 BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); 37 String line; 38 StringBuilder sb = new StringBuilder(); 39 while ((line = br.readLine()) != null) {// 循環讀取流 40 sb.append(line); //寫入對象中 41 } 42 br.close();// 關閉流 43 connection.disconnect();// 斷開連接 44 System.out.println(sb.toString()); 45 } catch (Exception e) { 46 e.printStackTrace(); 47 System.out.println("請求失敗!"); 48 } 49 } 50 51 /** 52 * 接口調用 POST 53 */ 54 public static void httpURLConnectionPOST(String urls) { 55 try { 56 URL url = new URL(urls); 57 58 // 將url 以 open方法返回的urlConnection 連接強轉為HttpURLConnection連接 (標識一個url所引用的遠程對象連接) 59 HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此時cnnection只是為一個連接對象,待連接中 60 61 // 設置連接輸出流為true,默認false (post 請求是以流的方式隱式的傳遞參數) 62 connection.setDoOutput(true); 63 64 // 設置連接輸入流為true 65 connection.setDoInput(true); 66 67 // 設置請求方式為post 68 connection.setRequestMethod("POST"); 69 70 // post請求緩存設為false 71 connection.setUseCaches(false); 72 73 // 設置該HttpURLConnection實例是否自動執行重定向 74 connection.setInstanceFollowRedirects(true); 75 76 // 設置請求頭里面的各個屬性 (以下為設置內容的類型,設置為經過urlEncoded編碼過的from參數) 77 // application/x-javascript text/xml->xml數據 application/x-javascript->json對象 78 // application/x-www-form-urlencoded->表單數據 79 connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 80 81 // 建立連接 (請求未開始,直到connection.getInputStream()方法調用時才發起,以上各個參數設置需在此方法之前進行) 82 connection.connect(); 83 84 // 創建輸入輸出流,用於往連接里面輸出攜帶的參數,(輸出內容為?后面的內容) 85 DataOutputStream dataout = new DataOutputStream(connection.getOutputStream()); 86 String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); // URLEncoder.encode()方法 為字符串進行編碼 87 88 // 將參數輸出到連接 89 dataout.writeBytes(parm); 90 91 // 輸出完成后刷新並關閉流 92 dataout.flush(); 93 dataout.close(); // 重要且易忽略步驟 (關閉流,切記!) 94 95 System.out.println(connection.getResponseCode()); 96 97 // 連接發起請求,處理服務器響應 (從連接獲取到輸入流並包裝為bufferedReader) 98 BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream())); 99 @SuppressWarnings("unused") 100 String line = null; 101 StringBuilder sb = new StringBuilder(); // 用來存儲響應數據 102 103 // 循環讀取流,若不到結尾處 104 while ((line = bf.readLine()) != null) { 105 sb.append(bf.readLine()); 106 } 107 bf.close(); // 重要且易忽略步驟 (關閉流,切記!) 108 connection.disconnect(); // 銷毀連接 109 System.out.println(sb.toString()); 110 111 } catch (Exception e) { 112 e.printStackTrace(); 113 } 114 } 115 116 /** 117 * get 請求 @param @param url @return String @throws 118 */ 119 public static String doGetStr(String url) { 120 DefaultHttpClient httpClient = new DefaultHttpClient(); 121 HttpGet httpGet = new HttpGet(url); 122 String result = ""; 123 124 try { 125 HttpResponse response = httpClient.execute(httpGet); 126 HttpEntity entity = response.getEntity(); 127 if (entity != null) { 128 result = EntityUtils.toString(entity, "UTF-8"); 129 } 130 } catch (ClientProtocolException e) { 131 e.printStackTrace(); 132 } catch (IOException e) { 133 e.printStackTrace(); 134 } finally { 135 HttpClientUtils.closeQuietly(httpClient); 136 } 137 return result; 138 } 139 140 /** 141 * post 請求 @param @param url @param @param outStr @throws 142 */ 143 public static String doPostStr(String url, String outStr) { 144 DefaultHttpClient httpClient = new DefaultHttpClient(); 145 HttpPost httpPost = new HttpPost(); 146 String result = ""; 147 148 try { 149 httpPost.setEntity(new StringEntity(outStr, "UTF-8")); 150 HttpResponse response = httpClient.execute(httpPost); 151 result = EntityUtils.toString(response.getEntity(), "UTF-8"); 152 } catch (ClientProtocolException e) { 153 e.printStackTrace(); 154 } catch (IOException e) { 155 e.printStackTrace(); 156 } finally { 157 HttpClientUtils.closeQuietly(httpClient); 158 } 159 return result; 160 } 161 }
以上是個人根據網上總結的幾種請求方法。