无法在我的端点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的答案。

08-03 19:56