Вызов REST api возвращает исключение FileNotFoundException

#java #android

#java #Android

Вопрос:

Я создаю свое первое простое приложение для Android. Для входа в систему я пытаюсь выполнить запрос к простому API на веб-сервере:

 URL url = new URL(API);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
  

Всякий раз, когда я пытаюсь запустить это, возвращается следующее:

 java.io.FileNotFoundException: http://www.gildeict.nl/api/gateway1.0.php at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)
  

У меня также есть следующее в моем AndroidManifest.xml

 <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  

Странно то, что файл действительно существует. Я не профессионал в Java, так что, возможно, я упускаю что-то очевидное.

Как может быть, что что-то настолько простое не работает?

Спасибо.

Комментарии:

1. добавили ли вы разрешение на доступ в Интернет в AndroidManifest.xml ?

2. Вы не можете получить это сообщение обратно, как для инструкции, которую вы не публиковали. Прочитайте сообщение, чтобы узнать, какая строка кода это была! Вы должны были опубликовать больше кода. Просто опубликуйте полный код.

Ответ №1:

Ваш код, кажется, в порядке. Причина вашей ошибки в том, что сервер возвращает HTTP-код ошибки для вашего запроса.

Например, когда я пытаюсь выполнить ваш запрос с помощью cURL:

 curl -i -X GET -H "Accept: application/json" -H "Content-Type: application/json; charset=UTF-8" "http://www.gildeict.nl/api/gateway1.0.php"
  

Я понимаю это:

 HTTP/1.1 500 Internal Server Error
Server: nginx
Date: Wed, 19 Oct 2016 08:16:25 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.6.26
Access-Control-Allow-Origin: *
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
X-Powered-By: PleskLin
  

Комментарии:

1. Могло ли это быть иначе, если бы вы отправляли строку json в API? (Я понятия не имею)

2. @WesleyPeeters это может быть по-другому, да. В конце концов, это зависит от того, как сервер обработает ваш запрос и какой тип ввода он ожидает.