Я пытался загрузить файл с сервера в Android, но все, что я получил, это FileNotFoundException.
Мой метод загрузки отлично работает для всех файлов, которые я ему предоставляю, но не для этого конкретного URL.
URL, на котором он не работает, выглядит следующим образом: http://server.com/download.aspx?action=geta&sid=12345&file=somedata.xml&client=android
Я не вижу ошибок в URL, если я ввожу его в веб-браузер, я немедленно получаю файл. С разрешениями тоже все в порядке, я могу использовать метод для загрузки любого другого файла с сервера, например, с помощью «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): на org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:532)
08-16 17: 32: 58.530: WARN / System.err (24754): на java.net.URL.openStream (URL.java:645)
08-16 17: 32: 58.530: WARN / System.err (24754): по адресу myapp.cont.fetch.Downloader.downloadURL (Downloader.java:412)
08-16 17: 32: 58.530: WARN / System.err (24754): на myapp.cont.fetch.Downloader.getData (Downloader.java:465)
08-16 17: 32: 58.530: WARN / System.err (24754): на myapp.cont.fetch.Downloader $ GetFilesTask.doInBackground (Downloader.java:245)
08-16 17: 32: 58.530: WARN / System.err (24754): на myapp.cont.fetch.Downloader $ GetFilesTask.doInBackground (Downloader.java:1)
08-16 17: 32: 58.530: WARN / System.err (24754): на android.os.AsyncTask $ 2.call (AsyncTask.java:252)
08-16 17: 32: 58.530: WARN / System.err (24754): в java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305)
08-16 17: 32: 58.530: WARN / System.err (24754): на java.util.concurrent.FutureTask.run (FutureTask.java:137)
08-16 17: 32: 58.530: WARN / System.err (24754): по адресу java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1081)
08-16 17: 32: 58.530: WARN / System.err (24754): по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:574)
08-16 17: 32: 58.530: WARN / System.err (24754): на java.lang.Thread.run (Thread.java:1020)