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

}`

这很好,但是当我在服务器上下载相同的图像并将网址更改为

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 回答