0

サーバーから画像を読み込んで ImageView に表示しようとしています

使った

    ImageView imgView = (ImageView) findViewById(R.id.ivProduct);

    Bitmap bitmap = null;

    try {

        URL urlImage = new URL(
                "http://www.google.fr/intl/en_com/images/srpr/logo1w.png");
        HttpURLConnection connection = (HttpURLConnection) urlImage
                .openConnection();
        InputStream inputStream = connection.getInputStream();
        bitmap = BitmapFactory.decodeStream(inputStream);
        imgView.setImageBitmap(bitmap);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}`

これはうまくいきましたが、サーバーに同じ画像をダウンロードして、URLを

http://localhost:9527/market_helper/img_products/logo1w.png

それは動かなかった。何が問題ですか ?

4

2 に答える 2

3

問題は、URL でhttp://localhost:9527ローカル マシンのサーバー上で実行されていると表示されていますが、Android からアクセスする場合http://localhostはデバイス自体を参照していることです。

同じネットワーク上にいる場合は、そのlocalhost部分を PC のローカル IP アドレス (たとえば) に置き換えてアクセスを試みることができます。コマンド ラインに192.168.100.6入力すると、IP が何であるかを確認できます。ipconfig

于 2011-12-11T16:39:33.240 に答える
0

localhost は、マシン (127.0.0.1) のループバック アダプターです。Android アプリからこのアドレスを使用することはおそらくできません (シミュレーターでは動作する可能性がありますが、私はまだ使用しません)。

同じネットワーク上にいる場合、マシン名は機能する可能性がありますが、イメージのホストに何を使用しているかによって異なります。IIS などの本格的な Web サーバーを使用している場合は問題ありません (使用するポートでのすべての受信接続に対するサーバーのファイアウォール設定を確認することを忘れないでください)。VS Web サーバー (cassini) などを使用している場合、そのままでは接続できないため、機能しません。

同じネットワーク上にない場合 (携帯電話が携帯電話のデータを使用している場合など)、パブリックにアドレス指定できるもの (インターネット上のサーバーを指す DNS 名または IP) が必要になります。サーバーで何を使用しているかは指定しませんが、無料または非常に安価で使用できるホスティング ソリューションが数多くあります。

お役に立てれば!

于 2011-12-11T16:37:49.183 に答える