Я делаю запрос на сайт.Тем не менее, я продолжаю получать возвращенный 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"}
.Метод, используемый сейчас, происходит от здесь .