以下是从doInBackground()
方法发出http请求的代码,由于某种原因,它会抛出FileNotFoundException
Bitmap icon = null;
String url = "http://abc.xyz.net/com.tatvic.oatest.gif?uv=2.0&ds=Yes&bt=100.0&tis=11.808&ais=5.478&tes=NA&aes=NA&cs=still";
try {
InputStream in = new java.net.URL(url).openStream();
icon = BitmapFactory.decodeStream(in);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
我遵循的另一种方法是使用HttpURLConnection
,如下所示,但仍然会发生相同的异常。
HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
icon = BitmapFactory.decodeStream(in);
堆栈跟踪:
12-27 15:19:54.726 31141-31188/com.tatvic.oatest W/System.err: java.io.FileNotFoundException: http://abc.xyz.net/com.tatvic.oatest.gif?uv=2.0&ds=Yes&bt=100.0&tis=11.808&ais=5.478&tes=NA&aes=NA&cs=still
12-27 15:19:54.729 31141-31188/com.tatvic.oatest W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
12-27 15:19:54.729 31141-31188/com.tatvic.oatest W/System.err: at java.net.URL.openStream(URL.java:470)
12-27 15:19:54.729 31141-31188/com.tatvic.oatest W/System.err: at com.tatvic.lib.uit.e.a(Unknown Source)
12-27 15:19:54.729 31141-31188/com.tatvic.oatest W/System.err: at com.tatvic.lib.uit.e.doInBackground(Unknown Source)
12-27 15:19:54.729 31141-31188/com.tatvic.oatest W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
12-27 15:19:54.730 31141-31188/com.tatvic.oatest W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-27 15:19:54.730 31141-31188/com.tatvic.oatest W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
12-27 15:19:54.730 31141-31188/com.tatvic.oatest W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
12-27 15:19:54.730 31141-31188/com.tatvic.oatest W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
12-27 15:19:54.730 31141-31188/com.tatvic.oatest W/System.err: at java.lang.Thread.run(Thread.java:818)
即使出现FileNotFoundException
,我也无法从任何文件路径访问任何内容。我正在捕捉异常,但我还是要打电话给那个网址。
原因是什么?我怎样才能解决呢?
答案 0 :(得分:6)
如果服务器抛出 404 ,则仅在进行网络呼叫时抛出例外的原因是什么?
FileNotFoundException
。即使您使用不允许的方法,即使用GET而不是POST,一些错误的服务器实现也会抛出 404 。
我该如何解决?
您可以通过点击浏览器中的URL并确保其实际存在来解决此问题。如果它存在,你不应该得到这个例外。