当我将Postman与Basic Auth一起使用时,我的端点工作得很好。但是,当我在“有保证的放心”中尝试它返回401时。我在保证放心的情况下尝试了两种不同的身份验证方法,到目前为止,它们都对我没有用。需要帮助!
RequestSpecification requestSpec;
String baseURI = "http://qa3-phoenix.labcorp.com";
String basePath = "/phx-rest/healthcheck/ping";
RestAssured.useRelaxedHTTPSValidation();
RestAssured.baseURI = baseURI;
requestSpec = new RequestSpecBuilder()
.setContentType(ContentType.JSON)
.build();
Response response = RestAssured
.given()
.spec(requestSpec)
.auth().basic("username","password")
.when()
.get(basePath)
.then()
.extract().response();
答案 0 :(得分:0)
useRelaxedHTTPSValidation()
是一种变通方法,当服务器未使用有效证书或您碰到SSLPeerUnverifiedException
时。在大多数情况下,这不会发生。
因此,请尝试删除useRelaxedHTTPSValidation()
。
您还可以尝试以下方法吗?
在创建RequestSpecification
时,可以将身份验证方案的对象添加到RequestSpecification中,然后使用该对象来创建http请求。
RequestSpecBuilder req = new RequestSpecBuilder();
PreemptiveBasicAuthScheme auth = new PreemptiveBasicAuthScheme();
auth.setUserName("");
auth.setPassword("");
req.setAuth(auth);
req.build();
也许您可以考虑从单独的类或包中创建RequestSpec,以便更好地重用。
让我知道这是否有帮助,或者让我了解一下堆栈跟踪。
答案 1 :(得分:0)
一个人可以直接使用带有base64编码的用户名和密码的Authorization
标头,并省略auth()
部分。
代码示例:
String authBasic = Base64.encode(String.format("%s:%s", username, password));
rest()
.header("Authorization", String.format("Basic %s", authBasic))