java - 调用 REST api 返回 FileNotFoundException

标签 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 专家,所以可能是我遗漏了一些明显的东西。

这么简单的东西怎么会不起作用呢?

谢谢。

最佳答案

您的代码似乎没问题。您的错误原因是服务器为您的请求返回了错误的 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/

相关文章:

java - 我们可以在类加载后重新转换类吗?

java - 为 Android 提供虚假速度(例如车辆)

android - 处理 LazyList 问题

android - 录制/捕获 Android 应用程序的内部声音播放并导出 mp3?

java - Hazelcast VersionedPortable 如何与类继承一起工作

java - java 流中的阻塞

java - 我的菜单被隐藏了,尽管我定义了它

Android MediaCodec 3gpp 编码器输出缓冲区包含不正确的字节

java - Linux/Debian Java 内存问题

java - 如何使用 Teamcity 配置 java junit?