我試圖從Android中的服務器下載文件,但我得到的只是一個FileNotFoundException。在Android上下載 - FileNotFoundException但存在文件
我的下載方法適用於我給它的所有文件,但不適用於此特定網址。 它無法正常工作的url看起來像這樣:http://server.com/download.aspx?action=geta&sid=12345&file=somedata.xml&client=android
我看到沒有錯誤的網址,如果我輸入到瀏覽器,我立即獲取文件。權限也是好的,我可以使用該方法從服務器下載其他文件,例如使用「getfile」而不是「get」,但是我想下載的文件只能通過「get」訪問,所以我可以只是取代它。
不管怎麼說,這是我的下載方法:
public String downloadURL (URL url, String fileName) throws IOException {
String destination = null;
try {
destination = Environment.getExternalStorageDirectory() + "/"
+ "myapp/" + fileName;
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(destination);
byte buffer[] = new byte[1024];
int bytes = 0;
while ((bytes = input.read(buffer)) != -1) {
output.write(buffer,0, bytes);
}
output.flush();
output.close();
input.close();
}
catch (Exception e) {
Log.e("DOWNLOAD URL", "downloading file failed due to " + e.toString());
}
return destination;
}
我在絕望是那種在這裏,我搜索StackOverflow的一段時間,但沒有得到解決,而且將是幫助,非常感謝。
編輯:錯誤堆棧,如果是這樣,我認爲它是:
08-16 17:32:58.530:WARN/System.err的(24754):java.io.FileNotFoundException: http://myfirm.com/download.aspx?action=get&sid=6d62429x-4e1c&file=data.xml&client=android 08-16 17:32:58.530:WARN/System.err(24754):at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:532) 08-16 17:32:58.530:WARN/System.err(24754):at java.net.URL.openStream(URL.java:645) 08-16 17:32:58.530:WARN/System.err(24754 ):at myapp.cont.fetch.Downloader.downloadURL(Downloader.java:412) 08-16 17:32:58.530:WARN/System.err(24754) :at myapp.cont.fetch.Downloader.getData(Downloader.java:465) 08-16 17:32:58.530:WARN/System.err(24754):at myapp.cont.fetch.Downloader $ GetFilesTask.doInBackground( Downloader.java:245) 08-16 17:32:58.530:WARN/System.err(24754):at myapp.cont.fetch.Downloader $ GetFilesTask.doInBackground(Downloader.java:1) 08-16 17: 32:58.530:WARN/System.err(24754):at android.os.AsyncTask $ 2.call(AsyncTask.java:252) 08-16 17:32:58.530:WARN/System.err(24754):at java .util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305) 08-16 17:32:58.530:WARN/System.err(24754):at java.util.concurrent.FutureTask.run(FutureTask.java :137) 08-16 17:32:58.530:WARN/System.err(24754):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081) 08-16 17:32:58.530:W ARN/System.err(24754):在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:574) 08-16 17:32:58.530:WARN/System.err(24754):at java。 lang.Thread.run(Thread.java:1020)
你能編輯你的文章,並提供錯誤堆棧嗎?優選使用pastebin鏈接或類似的。 – pkk
記住,如果你使用模擬器,你需要在avd管理器中添加SD卡。 –
您是否找到解決問題的方法? –