放心在打额外的电话

Rest-assured is making an extra call

我正在使用 rest-assured 测试 REST API。当我发送 POST 请求时,看起来很放心,正在拨打额外的电话。这是 /var/log/httpd/access_log 的输出:

11.31.41.111 - - [26/Nov/2019:19:39:14 +0000] "POST /rest/v1/contact HTTP/1.1" 401 340 "-" "Apache-HttpClient/4.5.3 (Java/1.8.0_221)"
11.31.41.111 - - [26/Nov/2019:19:39:14 +0000] "POST /rest/v1/contact HTTP/1.1" 200 515 "-" "Apache-HttpClient/4.5.3 (Java/1.8.0_221)"

当我使用 Postman 发送完全相同的请求时,访问日志显示只有一个请求到达服务器:

11.31.41.111 - - [26/Nov/2019:19:40:44 +0000] "POST /rest/v1/contact/ HTTP/1.1" 200 529 "-" "PostmanRuntime/7.19.0"

知道为什么会这样吗?

在构建 RestAssured 请求规范时,您应该使用抢占式身份验证。这是一个例子:

RestAssured.given().auth().preemptive().basic("username", "password")
      .when().get("http://example.com")
      .then().statusCode(200);