Исключение Android FileNotFoundFound - не может получить потерю от URL-адреса изображений, который не имеет формата файла

StackOverflow https://stackoverflow.com/questions/4218807

Вопрос

Название довольно объяснило.

Следующий код ...:

    URL imageUrl = new URL(url);
   try {
                HttpURLConnection conn= (HttpURLConnection)imageUrl.openConnection();
                conn.setDoInput(true);
                conn.connect();
                int length = conn.getContentLength();
                InputStream is = conn.getInputStream();
                return BitmapFactory.decodeStream(is);
           } catch (IOException e) {
            e.printStackTrace();
           }

Не удается, если URL-адрес не содержит формат файла. Например, некоторые изображения, размещенные Google Google, отобразит изображение, еще не имейте формата файла (.png, .jpg и т. Д.) в составе URL.

В результате заголовок типа содержимого устройства URL возвращает «Текст / HTML». Я верю, что это проблема.

Я попробовал установить новый заголовок типа содержимого, но это, кажется, ничего не меняет.

Кто-нибудь знает обходной путь?

Благодарю.

Это было полезно?

Решение

Я бежал в проблемы, и я вспомнил гуглами, и это было мое окончательное решение

        try {
            URL url = new URL(imageUrl);
            HttpGet httpRequest = null;

            httpRequest = new HttpGet(url.toURI());

            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);

            HttpEntity entity = response.getEntity();
            BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
            InputStream input = bufHttpEntity.getContent();

            Bitmap bitmap = BitmapFactory.decodeStream(input);

            ImageActivity.this.i.setImageBitmap(bitmap);
            ImageActivity.this.i.refreshDrawableState();
            input.close();

        } catch (MalformedURLException e) {
            Log.e("ImageActivity", "bad url", e);
        } catch (Exception e) {
            Log.e("ImageActivity", "io error", e);
        }

Другие советы

BitmapFactory.decodeStream Только читает сырой байтовый поток самого изображения, оно не знает о URL-адреса, ни кодировке контента, поэтому я не думаю, что они находятся на вине здесь. Он должен быть в состоянии прочитать формат изображения непосредственно из заголовка изображения.

Вероятно, URL перенаправляется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top