Pregunta

El título es bastante explicativo.

el siguiente código ...:

    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();
           }

fallará si el URL no contiene el formato de archivo. Por ejemplo, algunas imágenes alojadas por Google mostrará la imagen aún no tienen el formato de archivo (.png, .jpg, etc.) como parte de la URL.

Como resultado, la cabecera de tipo de contenido de la dirección URL de conexión vuelve "text / html". Creo que este es el problema.

He intentado fijar una nueva cabecera de tipo de contenido, pero eso no parece cambiar nada.

Alguien sabe una solución?

gracias.

¿Fue útil?

Solución

Yo estaba corriendo en problemas y me acordé de alrededor de google y esta fue mi solución final

        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);
        }

Otros consejos

BitmapFactory.decodeStream sólo lee el flujo de bytes en bruto de la propia imagen, no tiene conocimiento acerca de la URL ni la codificación de contenido, así que no creo que ellos tienen la culpa aquí. Debe ser capaz de leer el formato de imagen directamente desde la cabecera de la imagen.

Probablemente la URL se le redirecciona automáticamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top