我需要传递以下网址:
https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectFilter= { “virtualGuests”:{ “主机名”:{ “操作”: “hostnameTest”}}}
我尝试了不同的方式,但它不起作用,这是我的代码的一部分:
System.out.println(
given().
when().get("https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectFilter={\"virtualGuests\":{\"hostname\":{\"operation\":\"hostnameTest\"}}}").asString());
}
例外:
java.lang.IllegalArgumentException: Invalid number of path parameters. Expected 1, was 0. Undefined path parameters are: "virtualGuests":{"hostname":{"operation":"hostnameTest".
根据例外情况,我认为我应该使用路径参数,我试过但是我没有成功。
此外,我尝试将 {替换为字符转义码%7B 。
有什么想法吗?提前致谢
答案 0 :(得分:0)
我刚试过这个:
encodeURI('{"virtualGuests":{"hostname":{"operation":"hostnameTest"}}}')
它给了我:
"%7B%22virtualGuests%22:%7B%22hostname%22:%7B%22operation%22:%22hostnameTest%22%7D%7D%7D"
答案 1 :(得分:0)
非常感谢塞巴斯蒂安和罗伯特!
我没有成功使用encodeURI,但我使用 queryParam 并且它可以正常工作
given().
queryParam("objectFilter", "{\"virtualGuests\":{\"hostname\":{\"operation\":\"hostnameTest\"}}}").
when().get("/SoftLayer_Account/getVirtualGuests")
.then().assertThat().body("id", hasItem(1111111));
非常感谢!