我正在尝试从服务器加载图像以在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
它不起作用。 有什么问题?
答案 0 :(得分:2)
问题是,在您的网址中,http://localhost:9527
表示它在本地计算机上的服务器上运行,但是当您从Android访问时,http://localhost
指的是设备本身。
如果您在同一个网络上,可以尝试通过将localhost
部分替换为PC的本地IP地址来访问它(例如192.168.100.6
)您可以通过键入{来找出您的IP是什么{1}}在命令行中。
答案 1 :(得分:0)
localhost是机器上的环回适配器(127.0.0.1),你可能无法使用Android应用程序中的这个地址(可能与模拟器一起工作,但我仍然不会使用它)。
如果您在同一个网络上,则计算机名称可能有效,但这取决于您用于托管图像的内容。如果您正在使用像IIS这样的完整的Web服务器或类似的东西,那么您应该是好的(不要忘记检查服务器上的防火墙设置到您使用的端口上的所有传入连接)。如果您使用的是VS Web服务器(cassini)之类的东西,那么它将无法正常工作,因为它不允许开箱即用的连接。
如果您不在同一个网络上(例如手机正在使用手机数据),那么您将需要一些可公开寻址的东西(指向您的互联网服务器的DNS名称或IP)。您没有在服务器上指定您正在使用的内容,但有许多托管解决方案可以免费或非常便宜地使用。
希望这有帮助!