Java 将图像下载并保存到sd卡中

Java 将图像下载并保存到sd卡中,java,android,exception,Java,Android,Exception,我正在尝试下载图像并将其保存到sd卡中,有时它工作,有时不工作。我需要帮助,试图理解为什么,我试图谷歌,但我找不到答案 这是我检索杂志发行的代码,然后循环json数组中的每个项目,然后下载并存储到sd卡中。但是有些图像没有下载,而是跳过(查看logcat) 检查您是否已为清单授予适当的权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="a

我正在尝试下载图像并将其保存到sd卡中,有时它工作,有时不工作。我需要帮助,试图理解为什么,我试图谷歌,但我找不到答案

这是我检索杂志发行的代码,然后循环json数组中的每个项目,然后下载并存储到sd卡中。但是有些图像没有下载,而是跳过(查看logcat)


检查您是否已为清单授予适当的权限

 <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

看看这个:

我会尝试最后一条评论,看看问题是否消失:

set属性(“http.keepAlive”、“false”)

现在,从长远来看,你可能不一定想要这样的设置,但至少要看看这是否相关

请注意,尽管这个问题涉及到Spring和其他一些东西,但它似乎是同一个根本问题:


最后,我不太确定你想在那里做什么,但是如果一个异步任务做了很多工作(并且没有真正处理像网络消失等突发事件),但是你可能会在其他方面遇到麻烦(与你的问题无关)。您可能还需要考虑通用图像下载/缓存库,如果可能的话,例如。即使你不使用其中的一个,稍微挖掘一下源代码,你可能会看到它们是如何使事情变得更加健壮的

谢谢你这么快的回复。是的,我已经检查并设置了这些许可证,解释了为什么我下载图像并将其保存到sd卡的速度如此之慢?因为我将它们都分块到一个异步任务中?我试着看你给我的链接,但对我来说太复杂了。但我会努力修改我的代码,使之更好
01-23 17:09:29.120: W/System.err(24339): java.io.EOFException
01-23 17:09:29.120: W/System.err(24339):    at libcore.io.Streams.readAsciiLine(Streams.java:203)
01-23 17:09:29.120: W/System.err(24339):    at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:544)
01-23 17:09:29.120: W/System.err(24339):    at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:784)
01-23 17:09:29.120: W/System.err(24339):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
01-23 17:09:29.120: W/System.err(24339):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
01-23 17:09:29.130: W/System.err(24339):    at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270)
01-23 17:09:29.130: W/System.err(24339):    at com.sfcca.coverflow.Store$downloadMagazine.doInBackground(Store.java:881)
01-23 17:09:29.130: W/System.err(24339):    at com.sfcca.coverflow.Store$downloadMagazine.doInBackground(Store.java:1)
01-23 17:09:29.130: W/System.err(24339):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
01-23 17:09:29.130: W/System.err(24339):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-23 17:09:29.130: W/System.err(24339):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-23 17:09:29.130: W/System.err(24339):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
01-23 17:09:29.130: W/System.err(24339):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-23 17:09:29.130: W/System.err(24339):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-23 17:09:29.130: W/System.err(24339):    at java.lang.Thread.run(Thread.java:856)
 <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />