私の目標は、Androidアプリケーションを搭載したGoogleアプリケーションエンジンサーバーからイメージをダウンロードすることです。私はそのためにasynctaskを使用します。サーバーはGoogleのアプリケーションエンジンにあり、画像(JPEGファイル)はブロブストアにあります。まず、サーバーがGoogle Chromeブラウザで動作しているかどうかを確認しました。ブラウザで同じURIの画像を見ることができました。だから私のサーバーは正常に動作しています。私の接続にはセッションがあり、それはhttps接続です。私のアプリは画像をドロウアブル(またはビットマップ?)としてダウンロードし、それらから配列を作成し、この配列をギャラリー用のimageadapterに配置する必要があります。問題は、Drawable myImage = Drawable.createFromStream( "Image")を実行したときです。 myImageはnullです。 (私はIf(myImage == null)でこれをチェックします)。ブラウザで画像が表示されるのはなぜですか?コードではnullですか?私がダウンロードしている描画可能なイメージはnullです
PS:私は多くの検索をしましたが、ウェブから画像をダウンロードする方法はたくさんあります。しかし、私はこれがなぜ機能していないのか理解できません。アンドロイド2.2でコードを実行しました。ここで
は、コードは次のとおりです。任意のアイデアについて
URI uri = new URI(URIString);
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
Scheme sch = new Scheme("https", socketFactory, 443);
httpclient.getConnectionManager().getSchemeRegistry().register(sch);
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());
HttpResponse response = httpclient.execute(httpget, myLibrary.localContext);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
Drawable myImage= Drawable.createFromStream(is, "Image");
entity.consumeContent();
if (myImage!=null){
System.out.println("PhotoID " + PhotoID + " is NOT null!");
return myImage;
} else {
System.out.println("PhotoID " + PhotoID + " is null!");
return null;
}
ありがとう!
リクエストと一緒に送信するのに重要なユーザエージェント文字列を確認しましたか? –
使用されているURIがSystem.outに出力されます。そのURIをコピーしてブラウザに貼り付けました。出来た。したがって、URIは要求に十分でなければなりません。多分それはセッションかhttpsについてですか?私は知らない:S – Genom