1. 程式人生 > >【介面測試】:HttpURLConnection 傳送post請求

【介面測試】:HttpURLConnection 傳送post請求

現在根據專案的需要,已經轉戰服務端的測試,就先從最簡單的傳送post請求,獲取響應資料,對json串解析

需求:
1、模擬不同國家的客戶端,去請求對應國家的任務
2、模擬不同的國家IP、模擬引數
3、Post傳送

post的方法類,程式碼如下:

public class HttpRequest {
    /**
     * 
     * @param url 請求的url地址
     * @param params 傳送的引數
     * @param countryCode 國家
     * @return
     */
     public static
String sendPost(String url, String params, String countryCode ) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 開啟和URL之間的連線 HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); // 設定通用的請求屬性
//61.0.50.0 印度 IN 、180.214.235.255 印度尼西亞 ID String IN = "61.0.50.0"; String ID = "180.214.235.255"; String US = "8.8.8.8"; conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); switch(countryCode){ case
"IN" : conn.setRequestProperty("X-Forwarded-For", IN); break; case "ID": conn.setRequestProperty("X-Forwarded-For", ID); break; case "US": conn.setRequestProperty("X-Forwarded-For", US); break; default: Out.println("沒有匹配到國家"); break; } conn.setRequestMethod("POST"); // 傳送POST請求必須設定如下兩行 conn.setDoOutput(true); conn.setDoInput(true); out = new PrintWriter(conn.getOutputStream()); // 傳送請求引數 out.print(params); // flush輸出流的緩衝 out.flush(); int code = conn.getResponseCode(); String codeInfo = conn.getResponseMessage(); if(code == 200){ System.out.println("響應code碼 : " + code ); // 定義BufferedReader輸入流來讀取URL的響應 in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line + "\n"; } }else{ System.out.println("響應code碼: " + code + " !"); } } catch (Exception e) { System.out.println("傳送 POST 請求出現異常!"+e); e.printStackTrace(); } //使用finally塊來關閉輸出流、輸入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return result; } }

呼叫的程式碼如下:

String countryCode  = "IN";
String url = "http://10.200.10.220/dc/v1/ts";   
String aid = "zwf0425";
//根據專案的需要,拼接字串,是post中需要傳送的引數,有的時候引數是需要進行加密的
String mingWen = "{\"platform\":\"android\",\"app_version\":\"2.0\",\"app_name\":\"com.monet.boost.max.am\",\"aid\":\""+ aid +"\",\"sdk_version\":\"1.3\"}";
//對明文進行加密變成密文,防止惡意篡改資料,這個加密的方法是我們開發自己寫的方法
String miWen = DataEn.encrypt(mingWen);
//response 就是介面post請求返回來的資料
String responseBody = HttpRequest.sendPost(url, miWen, countryCode);

介面響應的資料也是經過加密的,首先我們需要解密,json格式的資料如下:

{
    "trackdata": [],
    "clickdata": [{
        "offer_id": "13141772",
        "click": "http://pixel.webeyemob.com/v1/ad/click?subsite_id=30222&transaction_id=&id=16600&offer_id=13141772&geo=IN&aid=baeb05b7e19be667&client_version=&gaid=13414e1d-9e57-4b17-935f-dcbfa9935535&tmark=1493112601846&p=&app_name=com.monet.boost.max.am&sdk_version=1.3&app_version=2.0",
        "appid": "com.monet.boost.max.am",
        "dataid": "100001020010224181493112705714"
    }]
}

我們在下一個教程中,講解如何解析響應的資料……