【发布时间】:2015-09-01 07:30:26
【问题描述】:
我尝试向 WordlPress 网站发送一个普通的 Http 请求。
如果我用我的网络浏览器打开它,一切正常。如果我通过 Android 应用程序打开它,它会抛出 java.io.FileNotFoundException。
Android 代码:
class SendComment extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
String _output = null;
try {
URL url = new URL(urls[0]);
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openStream()));
_output = buffer.readLine();
buffer.close();
} catch (IOException e) {
e.printStackTrace();
}
return _output;
}
protected void onPostExecute(String result) {
}
}
但是当我删除电子邮件地址的“@”或“.com”时,它甚至可以在 Android 上运行。似乎可用的电子邮件地址是导致崩溃的原因。
这是 StackTrace:
java.io.FileNotFoundException: http://localhost.com/api/submit_comment?post_id=23856&name=Max&email=Max.Mustermann%40googlemail.com&content=hallo
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:206)
at java.net.URL.openStream(URL.java:470)
at de.example.app.SendComment.doInBackground(ServerManager.java:230)
at de.example.app.SendComment.doInBackground(ServerManager.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
【问题讨论】:
-
来自 logcat 的 StackTrace?无论如何,我相信这可能只是一个 URLEncode 问题:developer.android.com/reference/java/net/URLEncoder.html
-
您的手机是否与您的计算机连接到同一个网络?尝试在手机的 WebBrowser 上打开此 URL,看看它是否有效。另外,请尝试删除“?”之前的“/”,如下所示:localhost.com/api/…
-
抛出异常,不返回。当您发布堆栈跟踪时,您会看到 BufferedReader 与它无关。
-
http://localhost.com/api/submit_comment?.....localhost????您的网站与您的应用程序在同一设备上吗?a WorldPress website? -
这只是为了告诉你我的意思。这是一个普通的网站。
标签: java android email httprequest bufferedreader