【介面測試】:HttpURLConnection 傳送post請求
阿新 • • 發佈:2019-01-07
現在根據專案的需要,已經轉戰服務端的測試,就先從最簡單的傳送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"
}]
}
我們在下一個教程中,講解如何解析響應的資料……