接口類似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);