【问题标题】:Android URL connection java.io.FileNotFoundExceptionAndroid URL 连接 java.io.FileNotFoundException
【发布时间】:2015-09-01 07:30:26
【问题描述】:

我尝试向 WordlPress 网站发送一个普通的 Http 请求。

这是网址: "http://localhost.com/api/submit_comment/?post_id=12345&name=Max&email=Max.Mustermann@googlemail.com&content=hallo"

如果我用我的网络浏览器打开它,一切正常。如果我通过 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


【解决方案1】:

网址编码存在问题。看看This Link

String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "https://stackoverflow.com/search?q=" + query;

【讨论】:

猜你喜欢
  • 2013-04-29
  • 2021-11-10
  • 1970-01-01
  • 2014-08-31
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
相关资源
最近更新 更多