2012-07-07 2 views
2

에뮬레이터에서 실행할 때 응용 프로그램이 HTTPS URL에서 이미지를로드하지 않습니다.안드로이드 BitmapFactory.decodeStream (...) 에뮬레이터에서 HTTPS URL을로드하지 않습니다.

샘플 코드 :

URL url = new URL("https://someserver.com/photo.jpg"); 
mImageView.setImageBitmap(BitmapFactory.decodeStream(url.openStream())); 

로드 된 이미지를 잘 실제 장치에서 실행할 때. 또한 에뮬레이터는 HTTPS 대신 HTTP를 통해 액세스하는 경우 이미지를로드합니다.

내가 잘못했거나 알려진 문제입니까?

+0

이 시도 mImageView.setImageBitmap (비트 맵); – AkashG

+0

@AkashG 같은 결과가 나타납니다. HTTPS와 함께 사용될 때 이미지를로드하지 않습니다. – tamsler

+0

@tamsler 확인 응답은 http://stackoverflow.com/questions/11241137/inputstream-read-has-no-response-when-downloading-large-imagesize-300k/11241660#11241660 – Khan

답변

7

url의 이미지 뷰에 이미지를 표시하려면 아래 코드를 사용하십시오.

ImageView mImageView = (ImageView)findViewById(R.id.mImageView1); 

URL url = new URL(address); 
InputStream content = (InputStream)url.getContent(); 
Drawable d = Drawable.createFromStream(content , "src"); 
mImageView.setImageDrawable(d); 

또한 아래 코드를 사용하십시오.() (의 InputStream) 새로운 URL (URL .getContent()) 비트 맵 비트 맵 = BitmapFactory.decodeStream;

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 b_entity = new BufferedHttpEntity(entity); 
    InputStream input = b_entity.getContent(); 

    Bitmap bitmap = BitmapFactory.decodeStream(input); 

    ImageView mImageView = (ImageView) findViewById(R.id.mImageView); 
    mImageView.setImageBitmap(bitmap); 
} catch (MalformedURLException e) { 
    Log.e("log", "bad url", t); 
} catch (IOException e) { 
    Log.e("log", "io error", t); 
} 
+2

위의 두 번째 해결 방법이 효과적입니다. 고맙습니다. – tamsler

+0

감사합니다 ... 그것은 나를 위해 일했습니다 – Noman

+0

두 번째 하나도 나를 위해 일했습니다, 감사합니다! –

1

신뢰할 수있는 https 사이트입니까? 그렇지 않으면 연결에 문제가 있습니다.

imageView.setImageBitmap(LoadImageFromWebOperations(url)); 

private Bitmap LoadImageFromWebOperations(String url){ 
      try{ 
      String encodedurl = url.replace(" ", "%20"); 
      InputStream is = (InputStream) new URL(encodedurl).getContent(); 
      Bitmap d = BitmapFactory.decodeStream(is); 
      return d; 
      }catch (Exception e) { 
      e.printStackTrace(); 
//   System.out.println("Exc="+e); 
      return null; 
      } 
     } 

을 그리고 pls는 u는 매니페스트 파일에 인터넷 권한을 추가해야합니다 :

이 한 번 봐

...

http://droidos-coding.blogspot.com/2012/03/android-trusting-all-https-self-signed.html

+0

에 있습니다. 신뢰할 수있는 https 사이트입니다. 의미하는 그들은 "진짜"SSL 인증서를 사용하고 있습니다. – tamsler

0

하면이 코드를 사용해보십시오. 이렇게하면 도움이 될 것입니다.

+0

나는 행운을 빌어 당신의 솔루션을 시험해 보았습니다. 그것은 AVD (에뮬레이터) 안드로이드 v2.2의 문제인 것 같습니다. 이미지는 4.x 기반 에뮬레이터 및 물리적 장치에서 올바르게 표시됩니다. – tamsler

관련 문제