Каким должен быть java-код для api-гарантированного доступа для получения токена доступа
Я хочу получить токен доступа из данного вызова REST-API. Я проверил это в почтальоне, и он работает нормально, который требует ввода данных во все 3 вкладки (Авторизация, Заголовок и тело и необходимо запустить метод отправки). Пожалуйста, найдите приложенные скриншоты для большей наглядности. Пожалуйста, объясните мне, как автоматизировать это с помощью библиотеки java и jayaway, или с помощью любого другого решения.
Скриншот почтальона - вкладка Авторизация
Скриншот почтальона - вкладка Заголовок
Скриншот почтальона - вкладка "Тело"
Примечание. Имя пользователя и пароль различаются при авторизации и различаются на вкладке "Тело".
2 ответа
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"}
Вы можете попробовать следующий пример:
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");