Как я могу получить токен на предъявителя от HttpClient? - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь отправить запрос POST через HttpClient, но в ответе сервера указана «неавторизованная» ошибка.Как я могу получить токен на предъявителя?Я искал решения, но не понимаю ...

Это мой код, и я не знаю, как получить токен для запроса ...

HttpPost request = new HttpPost("http://domain...");
request.setHeader(HttpHeaders.ACCEPT, "application/json, text/plain, */*");
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/#json");
request.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "de,en-US;q=0.7,en;q=0.3");
request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");
request.setHeader(HttpHeaders.REFERER, "https://domain...");
request.setHeader("DNT", "1");
request.setHeader(HttpHeaders.HOST, "host..");
String authToken = ""; // ... ?
request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + authToken);
StringEntity params = new StringEntity("{}");
params.setContentEncoding("UTF-8");
request.setEntity(params);
response = this.getHttpClient().execute(request);

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Похоже, что вы пытаетесь получить доступ к некоторым API, что требует от вас сначала получить некоторый токен доступа (токен на предъявителя), прежде чем приступить к действительному API.

Большинство потоков состоит из двух шагов, как описано ниже.

Шаг 1. Извлечь токен-носитель с базовой аутентификацией (ниже конечная точка и параметр являются образцом значения и будут отличаться для вашего API)

POST /auth 
`request.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + authToken);`

Шаг 2: Шаг 1 даст вам какой-то токен доступа в ответ.Вы должны использовать это, чтобы сделать любой последующий вызов API.

GET /Student/Mark
`request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + authToken);`

Подробнее о токене носителя вы можете прочитать на Что такое токен носителя OAuth 2.0?

Дайте мне знать, если у вас все еще есть какие-либо сомнения или вы не можете получить доступ к своему API с помощью подхода, который я упомянул.

0 голосов
/ 10 мая 2019

Сначала вы должны аутентифицировать пользователя, используя имя пользователя и пароль (используя HTTP-вызов), затем у вас будет токен в ответе, вы можете добавить его к следующему POST-вызову в заголовке.

Требуется один вызов get / post перед вашим вызовом POST, чтобы у вас был токен. Этот же токен можно использовать для всех последующих вызовов.

...