我想从给定的 REST-API 调用中获取访问令牌。我已经在邮递员中对此进行了测试,它工作正常,需要在所有 3 个选项卡中输入数据(授权、标题和正文,并且需要触发 post 方法)。请找到随附的屏幕截图以获得更好的清晰度。请指导我如何使用 java 和 jayaway 再保证库或任何其他解决方案来自动化它。
注意:用户名和密码在授权和正文选项卡中不同
我想从给定的 REST-API 调用中获取访问令牌。我已经在邮递员中对此进行了测试,它工作正常,需要在所有 3 个选项卡中输入数据(授权、标题和正文,并且需要触发 post 方法)。请找到随附的屏幕截图以获得更好的清晰度。请指导我如何使用 java 和 jayaway 再保证库或任何其他解决方案来自动化它。
注意:用户名和密码在授权和正文选项卡中不同
RestAssured.baseURI = "http://URI";
Response res = given().header("Content-Type", "application/json")
.body("{" + " \"username\":\"yourmail@something.com\"," + " \"password\":\"ab@1234\""
+ "}")
.when().post("/api/token").then().log().all().assertThat().statusCode(200)
.contentType(ContentType.JSON).extract().response();
String responseString = res.asString();
System.out.println(responseString);
JsonPath js = new JsonPath(responseString);
String str = js.get("data.access_token");
System.out.println(str);
假设您的响应将如下所示:
{"token_type":"bearer","access_token":"AAAA%2FAAA%3DAAAAAAAA"}
您可以尝试以下 Rest Assured 示例:
JsonPath jsonPath = RestAssured.given()
.auth().preemptive().basic("username", "password")
.contentType("application/x-www-form-urlencoded")
.formParam("username", "johndoe")
.formParam("password", "12345678")
.formParam("grant_type", "password")
.formParam("scope", "open_d")
.when()
.post("http://www.example.com/oauth2/token")
.then()
.statusCode(200)
.contentType("application/json")
.extract().jsonPath();
String tokenType = jsonPath.getString("token_type");
String accessToken = jsonPath.getString("access_token");