java后台調用HttpURLConnection類模擬瀏覽器請求(一般用於接口調用)


   項目開發中難免遇到外部接口的調用,小生今天初次接觸該類,跟着API方法走了一遍,如有不對的地方,還請哆哆指正,拜謝!

1
package com.cplatform.movie.back.test; 2 3 import java.io.BufferedReader; 4 import java.io.DataOutputStream; 5 import java.io.InputStreamReader; 6 import java.net.HttpURLConnection; 7 import java.net.URL; 8 import java.net.URLEncoder; 9 10 11 12 public class HttpURLConnectionTest { 13 public static final String GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32"; 14 public static final String POST_URL = "http://112.4.27.9/mall-back/if_user/store_list"; 15 16 /** 17 * 接口調用 GET 18 */ 19 public static void httpURLConectionGET() { 20 try { 21 URL url = new URL(GET_URL); // 把字符串轉換為URL請求地址 22 HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打開連接 23 connection.connect();// 連接會話 24 // 獲取輸入流 25 BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); 26 String line; 27 StringBuilder sb = new StringBuilder(); 28 while ((line = br.readLine()) != null) {// 循環讀取流 29 sb.append(line); 30 } 31 br.close();// 關閉流 32 connection.disconnect();// 斷開連接 33 System.out.println(sb.toString()); 34 } catch (Exception e) { 35 e.printStackTrace(); 36 System.out.println("失敗!"); 37 } 38 } 39 40 /** 41 * 接口調用 POST 42 */ 43 public static void httpURLConnectionPOST () { 44 try { 45 URL url = new URL(POST_URL); 46 47 // 將url以open方法返回的urlConnection連接強轉為HttpURLConnection連接(標識一個url所引用的遠程對象連接)
         // 此時cnnection只是為一個連接對象,待連接中
48 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 49 50 // 設置連接輸出流為true,默認false (post 請求是以流的方式隱式的傳遞參數) 51 connection.setDoOutput(true); 52 53 // 設置連接輸入流為true 54 connection.setDoInput(true); 55 56 // 設置請求方式為post 57 connection.setRequestMethod("POST"); 58 59 // post請求緩存設為false 60 connection.setUseCaches(false); 61 62 // 設置該HttpURLConnection實例是否自動執行重定向 63 connection.setInstanceFollowRedirects(true); 64 65 // 設置請求頭里面的各個屬性 (以下為設置內容的類型,設置為經過urlEncoded編碼過的from參數) 66 // application/x-javascript text/xml->xml數據
         // application/x-javascript->json對象
         // application/x-www-form-urlencoded->表單數據
67 connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 68 69 // 建立連接 (請求未開始,直到connection.getInputStream()方法調用時才發起,以上各個參數設置需在此方法之前進行) 70 connection.connect(); 71 72 // 創建輸入輸出流,用於往連接里面輸出攜帶的參數,(輸出內容為?后面的內容) 73 DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
         //URLEncoder.encode()方法 為字符串進行編碼(具體編碼格式依據項目文檔而定)
74 String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); 75 76 // 將參數輸出到連接 77 dataout.writeBytes(parm); 78 79 // 輸出完成后刷新並關閉流 80 dataout.flush(); 81 dataout.close(); // 重要且易忽略步驟 (關閉流,切記!) 82 83 System.out.println(connection.getResponseCode()); 84 85 // 連接發起請求,處理服務器響應 (從連接獲取到輸入流並包裝為bufferedReader) 86 BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream())); 87 String line; 88 StringBuilder sb = new StringBuilder(); // 用來存儲響應數據 89 90 // 循環讀取流,若不到結尾處 91 while ((line = bf.readLine()) != null) { 92 sb.append(bf.readLine()); 93 } 94 bf.close(); // 重要且易忽略步驟 (關閉流,切記!) 95 connection.disconnect(); // 銷毀連接 96 System.out.println(sb.toString()); 97 98 } catch (Exception e) { 99 e.printStackTrace(); 100 } 101 } 102 103 104 public static void main(String[] args) { 105 // httpURLConectionGET(); 106 httpURLConnectionPOST(); 107 } 108 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM