BitmapFactory.decodeStream возвращает null без исключения

Я пытаюсь загрузить удаленное изображение с сервера, и благодаря большому количеству примеров кода в stackoverflow у меня есть решение, которое работает в 2 из 3 изображений. Я действительно не знаю, в чем проблема с третьим изображением, а иногда, когда код запускается в отладчике, загружается изображение. Также, если я загружаю изображение проблемы сначала, другие два изображения иногда не загружаются.

Вот код:

public static Drawable getPictureFromURL(Context ctx, String url, final int REQUIRED_SIZE) throws NullPointerException { //Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); int scale = 1; if (o.outWidth > REQUIRED_SIZE) { scale = (int) Math.pow(2, (int) Math.round(Math.log(REQUIRED_SIZE / (double) Math.max(o.outHeight, o.outWidth)) / Math.log(0.5))); } Log.i(Prototype.TAG, "scale: "+scale); //Decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bmp; try { bmp = BitmapFactory.decodeStream((InputStream) Tools.fetch(url), null, o2); if(bmp!=null) return new BitmapDrawable(ctx.getResources(), bmp); else return null; } catch (Exception e) { Log.e(Prototype.TAG, "Exception while decoding stream", e); return null; } } 

Во время отладки я обнаружил, что o.outWidth -1, что указывает на ошибку, но исключение Exception не выбрасывается, поэтому я не могу сказать, что пошло не так. InputStream всегда возвращал действительное значение, и я знаю, что изображение существует на сервере.

С наилучшими пожеланиями

Я нашел ответ здесь и обновил метод выборки:

 private static InputStream fetch(String address) throws MalformedURLException,IOException { HttpGet httpRequest = new HttpGet(URI.create(address) ); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); InputStream instream = bufHttpEntity.getContent(); return instream; }