Domanda

Il titolo è piuttosto auto esplicativo.

il seguente codice ...:

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

fallirà se l'URL non contiene il formato di file. Ad esempio, alcune immagini ospitate da Google visualizzerà ancora l'immagine non avere il formato del file (.png, .jpg, ecc) come parte dell'URL.

Di conseguenza, il tipo di contenuto intestazione del URL rendimenti di connessione "text / html". Credo che questo sia il problema.

Ho provato a fissare un nuovo header Content-Type, ma quello non sembra cambiare nulla.

Qualcuno sa una soluzione?

Grazie.

È stato utile?

Soluzione

I correva in problemi e mi ricordai googling intorno e questa era la mia soluzione finale

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

Altri suggerimenti

BitmapFactory.decodeStream legge solo il flusso di byte cruda dell'immagine stessa, non ha alcuna conoscenza circa l'URL né la codifica del contenuto, quindi non credo che siano colpa qui. Dovrebbe essere in grado di leggere il formato dell'immagine direttamente dal nell'intestazione dell'immagine.

Probabilmente l'URL viene reindirizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top