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