Почему тот же http-запрос работает в браузере и не выполняется при отправке из моего приложения для Android? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь получить данные в формате jSON из Directus Api, и запросы работают нормально, если они сделаны из браузера.Однако, когда я отправляю те же самые запросы из моего приложения для Android (идентичные URL-адреса, с заголовком «Авторизация» или с параметрами) - запросы не выполняются с java.io.FileNotFoundException и кодом ответа 405.

URL с параметрами: WORKS IN BROWSER

http://example.com/dev/public/_/items/cities/1?access_token=my_test_token

Тот же запрос с параметрами: FAILS IN ADNROID

Uri.Builder builder = new Uri.Builder();
builder.appendQueryParameter("access_token","my_test_token");
//..
URL url = new URL(serverURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("Content-Type", "application/json; UTF-8");
conn.addRequestProperty("Accept","application/json; charset=utf-8");
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();

URL-адрес без параметров, отправленный с заголовком «Authorization: Bearer my_test_token»: WORKS IN BROWSER

http://example.com/dev/public/_/items/cities/1

Тот же запрос с «Authorization: Bearer»my_test_token 'header: FAILS IN ANDROID

URL url = new URL(serverURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.addRequestProperty("Authorization", "Bearer " + token);
conn.addRequestProperty("Content-Type", "application/json; UTF-8");
conn.addRequestProperty("Accept","application/json; charset=utf-8");
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();

Ни один из вышеперечисленных запросов (с параметрами или с «Авторизацией») работает в Android.Есть ли разница между запросами браузера и Android?Почему тот же запрос не выполняется на Android, выдавая java.io.FileNotFoundException , но работает в браузере?Кто-нибудь может помочь?Спасибо.

1 Ответ

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

Я выяснил, что я использовал POST и пытался отправить поток вывода, когда разрешенный метод был GET, поэтому сервер вернул 405 'methodNotAllowed'.

...