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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章