비동기 작업을 사용하여 인터넷에서 다운로드 한 이미지를 디코딩하려고합니다. 문제는 때때로 이미지가로드되고 때때로 그렇지 않다는 것입니다. URL의 이미지는 항상 존재합니다. 여기 이미지가 나타나지 않습니다.
내 asycn 작업입니다 :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);
}
}
}
그리고 여기에 내 로그입니다 :
09-29 15 : 53 : 14.590 : System.err에/W (14373) : java.net.ConnectException : /127.0.0.1 (포트 81)에 연결하지 못했습니다 : 연결 실패 : ECONNREFUSED (연결이 거부 됨) 09-29 15 : 53 : 14.590 : System.err (14373) : libcore .io.IoBridge.connect (IoBridge.java:114) 09-29 15 : 53 : 14.590 : W/System.err (14373) : java.net.PlainSocketImpl.connect (PlainSocketImpl.java:192) 09-29 15 : 53 : 14.590 : W/System.err (14373)) : java.net.PlainSocketImpl.connect (PlainSocketImpl.java:459) 09-29 15 : 53 : 14.590 : System.err (14373) : java.net.Socket.connect (Socket.java:842)) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpConnection. (HttpConnection.java:76) 09-29 15 : 53 : 14.590 : 시스템. 오류 (14373) : libcore.net.http.HttpConnection. (HttpConnection.java:50) 09-29 15 : 53 : 14.590 : System.err (14373) : libcore.net.http.HttpConnection $ Address .connect (HttpConnection.java:340) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpConnectionPool.get (HttpConnectionPool.java:87) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.ne에 있음 t.http.HttpConnection.connect (HttpConnection.java:128) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpEngine.openSocketConnection (HttpEngine.java:316) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpEngine.connect (HttpEngine.java:311) 09-29 15 : 53 : 14.590 : 시스템. 오류 (14373) : libcore.net.http.HttpEngine.sendSocketRequest (HttpEngine.java:290) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpEngine. sendRequest (HttpEngine.java:240) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpURLConnectionImpl.getResponse (HttpURLConnectionImpl.java:282) 09-29 15 : 53 : 14.590 : W/System.err (14373) : libcore.net.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:177) 09-29 15 : 53 : 14.590 : W/System.err (14373) : com.example.weatherforecast.WeatherHttpClient.getImage (WeatherHttpClient.java:116) 09-29 15 : 53 : 14.590 : W/System.err (14373) : com.example.weatherforecast.MainActivity $ JSONForecastWeatherTask. doInBackground (MainActivity.java:187) 09-29 15 : 53 : 14.590 : System.err (14373) : com.example.weatherforecast.MainActivity $ JSONForecastWeatherTask.doInBackground (MainActivity.java:1) 09-29 15 : 53 : 14.590 : W/System.err (14373) : android.os.AsyncTask $ 2.call (AsyncTask.java:287) 09-29 15 : 53 : 14.590 : W/System.err (14373) : java.util.concurrent.FutureTask.run (FutureTask.java:234) 09-29 15 : 53 : 14.590 : W/System.err (14373) : android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask. java : 230) 09-29 15 : 53 : 14.590 : W/System.err (14373) : java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) 09-29 15 : 53 : 14.600 : W/System.err (14373) : java.util.concurrent.ThreadPoolExecutor에서 $ Worker.run (ThreadPoolExecutor.java:573) 09-29 15 : 53 : 14.600 : System.err (14373) : java.lang.Thread.run (Thread.java:856) 09-29 15 : 53 : 14.600 : System.err (14373) : 원인 : libcore.io.ErrnoException : 연결 실패 : ECONNREFUSED (연결 거부) 09-29 15 : 53 : 14.600 : W/System.err (14373) : libcore.io.Posix.connect (기본 방법) 09-29 15 : 53 : 14.600 : W /System.err(14373) : libcore.io.BlockGuardOs.connect (BlockGuardOs.java : 85) 09-29 15 : 53 : 14.600 : W/System.err (14373) : libcore.io.IoBridge.connectErrno (IoBridge.java:127) 09-29 15 : 53 : 14.600 : W/System.err에 (14373) : libcore.io.IoBridge.connect (IoBridge.java:112)에서
휴대 전화로 실행하고 있습니다. 어떻게 해결할 수 있습니까? – GibranG
올바른 주소를 사용하십시오. 예를 들어 WiFi에있는 경우 가정용 라우터가 컴퓨터에 할당 한 IP (서버가 dev 컴퓨터에 있다고 가정) – Joni