При отправке охтпп запроса: HTTP ERROR 405 и invalid_client - PullRequest
0 голосов
/ 16 февраля 2019

Я делаю запрос на сайт.Тем не менее, я продолжаю получать возвращенный JSON {"error":"invalid_client"}.Кроме того, когда я перехожу к URL-адресу, который я запрашиваю через веб-браузер, он показывает HTTP ERROR 405.

Из того, что я прочитал об этих ошибках, это может означать, что мой запрос структурирован неправильно.

Согласно документации API, это пример типа запроса, который я пытаюсь выполнить:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "client_secret={your_client_secret}&client_id={your_client_id}&code={your_authorization_code}&grant_type=authorization_code&redirect_uri={your_redirect_uri}");
Request request = new Request.Builder()
  .url("https://api.website.com/v2/oauth2/token")
  .post(body)
  .addHeader("content-type", "application/x-www-form-urlencoded")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

Из того, что я могу сказать, мое должно делать то же самое, простонемного по-другому.


Здесь - это Pastebin моего doInBackground метода (я использую AsynchTask).Вот более подходящая часть:

OkHttpClient client = new OkHttpClient();

// A section here gets strings from a JSON file storing values such as client_id

 RequestBody bodyBuilder = new FormBody.Builder()
  .add("client_secret", CLIENT_SECRET)
  .add("client_id", CLIENT_ID)
  .add("code", AUTHORIZATION_CODE)
  .add("grant_type", GRANT_TYPE)
  .add("redirect_uri", REDIRECT_URI)
  .build();
 System.out.println("Built body: " + bodyBuilder.toString());

 String mediaTypeString = "application/x-www-form-urlencoded";
 MediaType mediaType = MediaType.parse(mediaTypeString);
 RequestBody body = RequestBody.create(mediaType, requestbodyToString(bodyBuilder)); // See Edit 1

 Request request = new Request.Builder()
  .url(TARGET_URL)
  .post(body)
  .addHeader("content-type", mediaTypeString)
  .addHeader("cache-control", "no-cache")
  .build();

 try {
  System.out.println("Starting request.");
  Response response = client.newCall(request).execute();
  String targetUrl = request.url().toString() + bodyToString(request);
  System.out.println("request: " + targetUrl);
  String responseBodyString = response.body().string();
  System.out.println("response: " + responseBodyString);
  return responseBodyString;
 } catch (IOException ex) {
  System.out.println(ex);
 }

Как я уже сказал, я получаю возвращенный JSON {"error":"invalid_client"}, и когда я перехожу к URL, я делаю запрос черезвеб-браузер показывает HTTP ERROR 405.


Я хотел бы предоставить столько дополнительной информации, сколько вам нужно.Спасибо!


Редактировать 1: Второй параметр этого раньше был bodyBuilder.toString (), но я изменил его, потому что понял, что на самом деле это не отправка тела.Результат все тот же - {"error":"invalid_client"}.Метод, используемый сейчас, происходит от здесь .

1 Ответ

0 голосов
/ 16 февраля 2019

Я понял, что это было - я на самом деле не записывал authentication_code в файл, а только добавил его в другой JSONObject.К сожалению.:)

...