restassured處理http查詢參數

接口類似post ip:port/test?keyA=a&keyB={"body":{},"header":{}}&keyC=c

需要調用這個接口,所以選用了restassure

問題1:

String requestUrl="ip:port/test?"+"keyA"+a+"&keyB="+keyB;

Response response=given().request().when().post(requestUrl);

localhost:8080 connet time out,爲什麼會跑到8080,一直無解。。

無奈下本地起了個端口8080的服務,沒報錯了,但是總覺得哪裏不對,

最後把requestUrl的ip前面加上了http://,再調用就不用本地起服務了,也可以正常運行了

問題2:

String requestUrl="http://ip:port/test?"+"keyA"+a+"&keyB="+keyB;
Response response=given().request().when().post(requestUrl);

報錯:invalid number of path parameters,expected2,was 0,undefined path parameters are {"body":{},"header":{}},懷疑應該是和keyB的value值爲jsonObject有關;

問題3:試着把post換成get,看看什麼情況,結果發現請求的接口url正確,但是報錯405(這個意料之中,這個接口方法是post的)

問題4:(爲什麼各種百度用params都可以解決,我這裏一直不行)

將參數都賦值在map中,然後用params參數,但是運行後一直是沒把接口中的查詢參數加到請求當中,還試了formParams,param,formParam,返回的response都是500

Map<String,String> params=new HashMap<String, String>();
params.put("keyA",a);
params.put("keyB",b);
params.put("keyC",c);
logger.info("params:"+params);
String requestUrl="ip:port/test";
Response response=given().header(header).params(params).when().post(requestUrl);

問題5:難道缺少了body?加上body,然後又報錯了,params和body只能二選一

Response response=given().header(header).params(params).when().body("").post(requestUrl);

問題6:最後想了個折中辦法,把keyA和keyC直接加到url裏,keyB用param,試了試運行正常了

String requestUrl="http://ip:port/test?keyA="+a+"&keyC="+c;

Response response=given().formParam("keyB",b).request().when().post(requestUrl);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章