(簡單記錄冠绢,有問題請指出)直接用java語言對接口進行測試有很多便利的地方,比如說復雜的參數(shù)化、部署服務甩卓、擴展性等 ? 下面我用兩種方式簡單列舉下java直接往http接口發(fā)送參數(shù),進行接口測試
一洒擦、方式一椿争,簡單不規(guī)范
此方法比較原始,最開始摸索的時候弄出來的
原理:
1.首先使用URL類創(chuàng)建URL對象
2.對指定url建立連接
3.設置相關屬性熟嫩,如請求方式秦踪、編碼、參數(shù)類型等 ? 類似http請求頭的屬性(可以通過F12在瀏覽器中查看)
4.創(chuàng)建輸出流對象掸茅,并寫入請求內(nèi)容
5.創(chuàng)建輸入流對象椅邓,并從字符輸入流讀取文本,緩沖字符
6.再使用in.readLine()方法存儲字符內(nèi)容
7.此時就得到了服務器響應數(shù)據(jù)昧狮,解析json驗證參數(shù)即可
代碼截圖/詳解
url = new URL(URL+"config/store/paymode/list");
傳入url景馁,創(chuàng)建URL對象。上面是域名+路徑
URLConnection connection = url.openConnection();
創(chuàng)建連接
connection.setDoOutput(true);
設置運行輸入屬性
connection.setRequestProperty("contentType", "UTF-8");
設置請求編碼格式
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
創(chuàng)建OutputStreamWriter對象傳輸字節(jié)流逗鸣。OutputStreamWriter?對象和getOutputStream方法介紹可以查jdk詳解
out.write("mcode="+Mocde()[0]+"&device_en="+Mocde()[1]);
通過流對象合住,寫入數(shù)據(jù)。這里參數(shù)格式類似web頁面上get請求所帶的參數(shù)
out.flush(); //刷新流
out.close();//關閉流
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
創(chuàng)建輸入流對象撒璧,并從字符輸入流讀取文本透葛,緩沖字符
String line = null;
?StringBuffer content= new StringBuffer();
while((line = in.readLine()) != null)
?{
? ? ? ? ? //line為返回值,這就可以判斷是否成功卿樱、
? ? ? ? ? ? content.append(line);
}
line參數(shù)用于臨時存放返回的數(shù)據(jù)僚害,content用于存放返回的全部數(shù)據(jù),readLine方法表示讀取一行數(shù)據(jù)繁调。通過while循環(huán)讀取數(shù)據(jù)萨蚕,把一行數(shù)據(jù)存入line,再累加到content中涉馁,構(gòu)成完整數(shù)據(jù)
JSONObject object=(JSONObject) JSONObject.parse(content.toString());
將返回值轉(zhuǎn)換為JSONObject對象
object.getIntValue("code")==0
根據(jù)getIntValue方法參數(shù)名為code的值门岔,并和做比較
JSONArray objectArray=object.getJSONArray("data");
將data節(jié)點的數(shù)據(jù)值轉(zhuǎn)換為JSONArray 數(shù)組對象。后面在根據(jù)自己項目的業(yè)務邏輯判斷值即可
方法二烤送、簡單寒随,比較規(guī)范
此方法是在方法一的基礎上進行了一些優(yōu)化,應該也有不足之處帮坚,可以優(yōu)化或者指出
原理
和方法一基本一致
代碼截圖/詳解
用于存放服務端響應的數(shù)據(jù)妻往,已轉(zhuǎn)換為String類型的數(shù)據(jù)
String result = "";
//用于存放服務端響應的字節(jié)流數(shù)據(jù)
BufferedReader reader = null;
./創(chuàng)建URL對象
URL url = new URL(urlPath);
//openConnection方法創(chuàng)建連接對象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//設置請求方式
conn.setRequestMethod("POST");
//設置為運行輸入
conn.setDoOutput(true);
//設置為運行輸出
conn.setDoInput(true);
..........
//把String類型的數(shù)據(jù)轉(zhuǎn)換為byte數(shù)組類型
byte[] writebytes = Json.getBytes();
// 設置文件長度,避免后面數(shù)據(jù)寫入輸出流時內(nèi)容長度不一致
conn.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
//getOutputStream方法獲頭字段和內(nèi)容
OutputStream outwritestream = conn.getOutputStream();
//將數(shù)據(jù)寫入此輸出流
outwritestream.write(Json.getBytes());
//判斷響應的狀態(tài)碼是否是200,200表示正常響應
conn.getResponseCode() == 200
//創(chuàng)建輸入流對象试和,并從字符輸入流讀取文本讯泣,緩沖字符
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
//獲取數(shù)據(jù)
reader.readLine();
然后返回result,校驗結(jié)果即可