1. 程式人生 > >如何測試http介面 日記一

如何測試http介面 日記一

今天組長讓測試一個http介面,當時有點懵,不知道怎麼測試,,想了一下,有了點思路,但是剛開始想到的是通過request請求來寫個方法呼叫,那先不管對錯,咱們今天先分享一下,通過request/response請求來呼叫http的方式:

(在網上收了一段程式碼:)

程式碼如下:

  1. package com.zhang.miaodou;  
  2. import java.io.BufferedReader;  
  3. import java.io.DataOutputStream;  
  4. import java.io.InputStreamReader;  
  5. import java.net.HttpURLConnection;  
  6. import java.net.URL;  
  7. import java.net.URLEncoder;  
  8. publicclass DemoTest1 {  
  9.     publicstaticfinal String GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";  
  10. //    public static final String POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
  11.     // 妙兜測試介面
  12.     publicstaticfinal String POST_URL = 
    "http://121.40.204.191:8180/mdserver/service/installLock";  
  13.     /** 
  14.      * 介面呼叫 GET 
  15.      */
  16.     publicstaticvoid httpURLConectionGET() {  
  17.         try {  
  18.             URL url = new URL(GET_URL);    // 把字串轉換為URL請求地址
  19.             HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 開啟連線
  20.             connection.connect();// 連線會話
  21.             // 獲取輸入流
  22.             BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));  
  23.             String line;  
  24.             StringBuilder sb = new StringBuilder();  
  25.             while ((line = br.readLine()) != null) {// 迴圈讀取流
  26.                 sb.append(line);  
  27.             }  
  28.             br.close();// 關閉流
  29.             connection.disconnect();// 斷開連線
  30.             System.out.println(sb.toString());  
  31.         } catch (Exception e) {  
  32.             e.printStackTrace();  
  33.             System.out.println("失敗!");  
  34.         }  
  35.     }  
  36.     /** 
  37.      * 介面呼叫  POST 
  38.      */
  39.     publicstaticvoid httpURLConnectionPOST () {  
  40.         try {  
  41.             URL url = new URL(POST_URL);  
  42.             // 將url 以 open方法返回的urlConnection  連線強轉為HttpURLConnection連線  (標識一個url所引用的遠端物件連線)
  43.             HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此時cnnection只是為一個連線物件,待連線中
  44.             // 設定連線輸出流為true,預設false (post 請求是以流的方式隱式的傳遞引數)
  45.             connection.setDoOutput(true);  
  46.             // 設定連線輸入流為true
  47.             connection.setDoInput(true);  
  48.             // 設定請求方式為post
  49.             connection.setRequestMethod("POST");  
  50.             // post請求快取設為false
  51.             connection.setUseCaches(false);  
  52.             // 設定該HttpURLConnection例項是否自動執行重定向
  53.             connection.setInstanceFollowRedirects(true);  
  54.             // 設定請求頭裡面的各個屬性 (以下為設定內容的型別,設定為經過urlEncoded編碼過的from引數)
  55.             // application/x-javascript text/xml->xml資料 application/x-javascript->json物件 application/x-www-form-urlencoded->表單資料
  56.             // ;charset=utf-8 必須要,不然妙兜那邊會出現亂碼【★★★★★】
  57.             connection.setRequestProperty("Content-Type""application/x-www-form-urlencoded;charset=utf-8");     
  58.             // 建立連線 (請求未開始,直到connection.getInputStream()方法呼叫時才發起,以上各個引數設定需在此方法之前進行)
  59.             connection.connect();  
  60.             // 建立輸入輸出流,用於往連線裡面輸出攜帶的引數,(輸出內容為?後面的內容)
  61.             DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());  
  62.             String app_key = "app_key="+ URLEncoder.encode("4f7bf8c8260124e6e9c6bf094951a111""utf-8");        // 已修改【改為錯誤資料,以免資訊洩露】
  63.             String agt_num = "&agt_num="+ URLEncoder.encode("10111""utf-8");              // 已修改【改為錯誤資料,以免資訊洩露】
  64.             String pid = "&pid="+ URLEncoder.encode("BLZXA150401111""utf-8");             // 已修改【改為錯誤資料,以免資訊洩露】
  65.             String departid = "&departid="+ URLEncoder.encode("10007111""utf-8");         // 已修改【改為錯誤資料,以免資訊洩露】
  66.             String install_lock_name = "&install_lock_name="+ URLEncoder.encode("南天大門""utf-8");  
  67.             String install_address = "&install_address="+ URLEncoder.encode("北京育新""utf-8");  
  68.             String install_gps = "&install_gps="+ URLEncoder.encode("116.350888,40.011001""utf-8");  
  69.             String install_work = "&install_work="+ URLEncoder.encode("小李""utf-8");  
  70.             String install_telete = "&install_telete="+ URLEncoder.encode("13000000000""utf-8");  
  71.             String intall_comm = "&intall_comm="+ URLEncoder.encode("一切正常""utf-8");  
  72.             // 格式 parm = aaa=111&bbb=222&ccc=333&ddd=444
  73.             String parm = app_key+ agt_num+ pid+ departid+ install_lock_name+ install_address+ install_gps+ install_work+ install_telete+ intall_comm;  
  74.             // 將引數輸出到連線
  75.             dataout.writeBytes(parm);  
  76.             // 輸出完成後重新整理並關閉流
  77.             dataout.flush();  
  78.             dataout.close(); // 重要且易忽略步驟 (關閉流,切記!) 
  79. //            System.out.println(connection.getResponseCode());
  80.             // 連線發起請求,處理伺服器響應  (從連接獲取到輸入流幷包裝為bufferedReader)
  81.             BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));   
  82.             String line;  
  83.             StringBuilder sb = new StringBuilder(); // 用來儲存響應資料
  84.             // 迴圈讀取流,若不到結尾處
  85.             while ((line = bf.readLine()) != null) {  
  86. //                sb.append(bf.readLine());
  87.                 sb.append(line).append(System.getProperty("line.separator"));  
  88.             }  
  89.             bf.close();    // 重要且易忽略步驟 (關閉流,切記!) 
  90.             connection.disconnect(); // 銷燬連線
  91.             System.out.println(sb.toString());  
  92.         } catch (Exception e) {  
  93.             e.printStackTrace();  
  94.         }  
  95.     }  
  96.     publicstaticvoid main(String[] args) {  
  97. //        httpURLConectionGET();
  98.         httpURLConnectionPOST();  
  99.     }  
  100. }