如何在网址中设置“{”之类的字符?

How can I set characters like "{" in urls?

我需要通过以下 URL:

https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests?objectFilter={"virtualGuests":{"hostname":{"operation":"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.

替换 {

有什么想法吗?提前致谢

我刚试过这个:

encodeURI('{"virtualGuests":{"hostname":{"operation":"hostnameTest"}}}')

它给了我:

"%7B%22virtualGuests%22:%7B%22hostname%22:%7B%22operation%22:%22hostnameTest%22%7D%7D%7D"

非常感谢塞巴斯蒂安和罗伯特!

我没有成功使用 encodeURI,但是我使用了 queryParam 并且有效

given().
                        queryParam("objectFilter", "{\"virtualGuests\":{\"hostname\":{\"operation\":\"hostnameTest\"}}}").
                 when().get("/SoftLayer_Account/getVirtualGuests")
                .then().assertThat().body("id", hasItem(1111111));   

非常感谢!