无法在我的端点URL中使用查询
我尝试使用。queryParams()
,但似乎不起作用。我收到以下错误
java.lang.IllegalArgumentException:无效数量的路径参数。
预期的1为0,未定义的路径参数为:
cycle-id [12345]; test.name [Validate_REST_Assured_Curly_Brackets]。
有人可以帮我吗
almQuery=https://{almurl}/qcbin/rest/domains/{domain}/projects/{project}/test-instances?query={cycle-id[12345];test.name[Validate_REST_Assured_Curly_Brackets]}
Response response = RestAssured.given().relaxedHTTPSValidation()
.contentType("application/xml")
.cookie(cookie) .get(getEntityEndpoint(almQuery)).then().extract().response();
最佳答案
这就是RestAssured实现的工作方式。每当您的网址包含花括号时,它都将使用path参数。例如,如果您的网址包含{project}
,则应提供名称为project
的路径参数。
避免这种情况的唯一方法是在网址中手动编码{
和}
字符。您可以使用URLEncoder.encode(),但是它会弄乱其他字符,因此请尝试简单地将所有{
和}
替换为编码值:
public class App {
public static void main(String[] args) {
String url = "http://www.example.com/path/{project}";
String encoded = encodeUrlBraces(url);
RestAssured.given()
.when()
.get(encoded);
}
private static String encodeUrlBraces(String url) {
return url.replaceAll("\\{", "%7B").replaceAll("}", "%7D");
}
}
这是Rest Assured创始人和贡献者https://github.com/rest-assured/rest-assured/issues/682的答案。