我正在制作我的第一个简单的 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 专家,所以可能是我遗漏了一些明显的东西。
这么简单的东西怎么会不起作用呢?
谢谢。
最佳答案
您的代码似乎没问题。您的错误原因是服务器为您的请求返回了错误的 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
关于java - 调用 REST api 返回 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125344/