0

我想从给定的 REST-API 调用中获取访问令牌。我已经在邮递员中对此进行了测试,它工作正常,需要在所有 3 个选项卡中输入数据(授权、标题和正文,并且需要触发 post 方法)。请找到随附的屏幕截图以获得更好的清晰度。请指导我如何使用 java 和 jayaway 再保证库或任何其他解决方案来自动化它。

邮递员截图 - 授权选项卡

邮递员屏幕截图 - 标题选项卡

邮递员截图 - 正文选项卡

注意:用户名和密码在授权和正文选项卡中不同

4

2 回答 2

0
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);
于 2019-01-03T08:59:54.640 回答
0

假设您的响应将如下所示:

{"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");
于 2019-01-03T10:43:34.983 回答