всегда получает неверный параметр grant_type или параметр отсутствует, но работает на почтальоне - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь получить токен доступа с помощью почтового запроса.Я попробовал запрос на почтальона, и он работает отлично.но при попытке из моего приложения я получаю сообщение об ошибке

{error: "invalid_request", error_description: "Недопустимый параметр grant_type или параметр отсутствует"}

Это Javaкод, который я пробовал:

    RestAssured.baseURI 
    ="http://localhost:8180/auth/realms/acme/protocol/openid- 
    connect/token";
    RequestSpecification request = RestAssured.given();

    JSONObject requestParams = new JSONObject();
    requestParams.put("grant_type", "password");
    requestParams.put("username", "amineamine"); // Cast
    requestParams.put("password", "amineamine");
    requestParams.put("client_id", "app-backend-springboot");
    requestParams.put("client_secret",  "9a1707db-431d-437c-bb70- 
    0e5f5d61dcb0");

    request.body(requestParams.toJSONString());
    request.header("Content-Type", "application/x-www-form-urlencoded; 
    charset=UTF-8");

    Response response = request.post();
    int statusCode = response.getStatusCode();
    System.out.println(response.print());
    System.out.println("The status code recieved: " + statusCode);
    System.out.println("Response body: " + 
    response.body().asString());

Это импорт:

import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.json.simple.JSONObject;

в почтальоне введите описание изображения здесь

1 Ответ

0 голосов
/ 07 апреля 2019

Я вижу одну существенную проблему с вашим кодом, которая, я думаю, могла бы очень хорошо объяснить вашу проблему. Вы отправляете JSON, и все же отправляете заголовок Content-Type, который предполагает, что вы отправляете данные формы.

Так как ваш пример с почтальоном отправляет данные формы, я предполагаю, что это то, что вы хотите сделать. Оставьте заголовок Content-Type таким, какой он есть, но измените тело POST на данные формы. То, как вы это имеете, два не совпадают. Правильная структура данных формы не является JSON.

Вот существующий пост о том, как отправлять данные формы с помощью RestAssured:

Как отправить запрос формы-данных Content-Type, используя уверенность?

Подводя итог, вы хотите поместить свои параметры в карту, а затем передать эту карту методу formParams() в цепочке построителя запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...