【问题标题】:REST Assured doesn't accept curly bracketsREST Assured 不接受大括号
【发布时间】:2019-09-29 04:07:31
【问题描述】:

无法在我的端点 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();

【问题讨论】:

    标签: java rest-assured


    【解决方案1】:

    这就是 RestAssured 实现的工作原理。每当您的 url 包含花括号时,它都会期望使用路径参数。例如,如果您的 url 包含 {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 的答案

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多