Im trying to decode images downloaded from the internet using an async task. The problem is that the images sometimes load and sometimes don't. The image on the URL is always present.
Here is my asycn task:
private class JSONIconWeatherTask extends AsyncTask<String, Void, byte[]> {
@Override
protected byte[] doInBackground(String... params) {
byte[] data = null;
try {
// Let's retrieve the icon
data = ( (new WeatherHttpClient()).getImage(params[0]));
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
@Override
protected void onPostExecute(byte[] data) {
super.onPostExecute(data);
if (data != null) {
Bitmap img = BitmapFactory.decodeByteArray(data, 0, data.length);
iconWeather.setImageBitmap(img);
}
}
}
And here is my log:
09-29 15:53:14.590: W/System.err(14373): java.net.ConnectException: failed to connect to /127.0.0.1 (port 81): connect failed: ECONNREFUSED (Connection refused) 09-29 15:53:14.590: W/System.err(14373): at libcore.io.IoBridge.connect(IoBridge.java:114) 09-29 15:53:14.590: W/System.err(14373): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 09-29 15:53:14.590: W/System.err(14373): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 09-29 15:53:14.590: W/System.err(14373): at java.net.Socket.connect(Socket.java:842) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpConnection.(HttpConnection.java:76) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpConnection.(HttpConnection.java:50) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpEngine.connect(HttpEngine.java:311) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282) 09-29 15:53:14.590: W/System.err(14373): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 09-29 15:53:14.590: W/System.err(14373): at com.example.weatherforecast.WeatherHttpClient.getImage(WeatherHttpClient.java:116) 09-29 15:53:14.590: W/System.err(14373): at com.example.weatherforecast.MainActivity$JSONForecastWeatherTask.doInBackground(MainActivity.java:187) 09-29 15:53:14.590: W/System.err(14373): at com.example.weatherforecast.MainActivity$JSONForecastWeatherTask.doInBackground(MainActivity.java:1) 09-29 15:53:14.590: W/System.err(14373): at android.os.AsyncTask$2.call(AsyncTask.java:287) 09-29 15:53:14.590: W/System.err(14373): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 09-29 15:53:14.590: W/System.err(14373): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 09-29 15:53:14.590: W/System.err(14373): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 09-29 15:53:14.600: W/System.err(14373): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 09-29 15:53:14.600: W/System.err(14373): at java.lang.Thread.run(Thread.java:856) 09-29 15:53:14.600: W/System.err(14373): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused) 09-29 15:53:14.600: W/System.err(14373): at libcore.io.Posix.connect(Native Method) 09-29 15:53:14.600: W/System.err(14373): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85) 09-29 15:53:14.600: W/System.err(14373): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 09-29 15:53:14.600: W/System.err(14373): at libcore.io.IoBridge.connect(IoBridge.java:112)