2016-10-19 145 views
3

我正在制作我的第一个简单的android应用程序。对于记录在我试图提出请求调用一个简单的API上的Web服务器:调用REST api返回FileNotFoundException

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的专业人士,但可能是因为我错过了一些明显的东西。

怎么可能那么简单的东西不起作用?

谢谢。

+0

你在AndroidManifest.xml中添加Internet的权限? – hakim

+0

是的,我做@hakim –

+0

你不能回复这条消息,因为它是你没有发布的声明。阅读消息以了解它是哪个代码行!你应该发布更多的代码。只需发布完整的代码。 – greenapps

回答

0

你的代码似乎没问题。出现错误的原因是服务器为您的请求返回错误HTTP代码。

举例来说,当我试着用卷曲来执行你的要求:

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 
+0

如果您要将json字符串发布到api,可能会有什么不同吗? (我不知道) –

+0

@WesleyPeeters可能不同,是的。最后,它取决于服务器如何处理您的请求以及它期望的输入类型。 –