【发布时间】:2012-03-11 01:42:16
【问题描述】:
我有一个 Android 应用在 Android 2.x 和 3.x 上运行良好,但在 Android 4.x 上运行时失败。
问题出在这段代码中:
URL url = new URL("http://blahblah.blah/somedata.xml");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
当应用程序在 Android 4.x 上运行时,getInputStream() 调用会生成 FileNotFoundException。当相同的二进制文件在早期版本的 Android 上运行时,它会成功。这些 URL 在 Web 浏览器和 curl 中也可以正常工作。
显然,HttpURLConnection 的某些内容在 ICS 中发生了变化。有没有人知道发生了什么变化,和/或修复可能是什么?
【问题讨论】:
-
文档说
setDoOutput(true)暗示setRequestMethod("POST")。你是什么意思? -
这是为了做一个 GET。 (代码不是我写的,所以不知道为什么有
setDoOutput(true)。) -
FWIW、
setRequestMethod("GET")和setDoOutput(true)出现在很多使用HttpURLConnection的示例代码中。它在哪里记录它强制发布? -
HTTP 方法
HttpURLConnection默认使用GET方法。如果调用了setDoOutput(true),它将使用POST。 developer.android.com/reference/java/net/HttpURLConnection.html -
它已经很老了,但我所做的只是我省略了 conn.setRequestMethod("GET") ,我们设置了 conn.setDoOutput(true) 这意味着它是一个 POST,反之亦然
标签: android httpurlconnection filenotfoundexception