문제

I am trying to load an image from a server to show it in an ImageView

I used

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

}`

This worked fine but when I downloaded the same image on my server and I changed the url to

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

It did not work. What is the problem ?

도움이 되었습니까?

해결책

The problem is that in your url the http://localhost:9527 says it is running on a server on your local machine, but when accessing from your Android the http://localhost refers to the device itself.

If you are on the same network you can try access it by replacing the localhost part with your PC's local IP address (for example 192.168.100.6) You can find out what your IP is by typing ipconfig in the command line.

다른 팁

localhost is the loopback adapter on the machine (127.0.0.1) you will probably not be able to use this address from the android app (might work with simulator but I still wouldn't use it).

If you are on the same network, the machine name might work but it depends on what you are using to host the image. If you are using a full blown web server like IIS or something like that you should be good (don't forget to check firewall settings on the server to all incoming connections on the port you use). If you are using something like the VS web server (cassini) then it will not work because it doesn't allow connections from off the box.

If you are not on the same network (like the phone is using cell data) then you will need something publicly addressable (a DNS name or IP that points to your server on the internet). You don't specify what you are using on the server, but there are many hosting solutions out there for free or very cheap that you could use.

Hope this helps!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top