Android:由于格式问题,我无法下载必须使用 URL 的图像

Android: I am unable to download an image with the URL I have to use due to formatting issues

我正在使用 API,它 return 是照片 URL 的字符串。然而,它的格式很奇怪,这导致我在使用 Volley(或任何其他与此相关的方法)下载图像时出现问题。

我的代码如下所示:

imageview = (ImageView) findViewById(R.id.imageView);
        String web_url = "http:\/\/static.giantbomb.com\/uploads\/square_avatar\/8\/87790\/1814630-box_ff7.png";
        String web_url2 = "http://www.finalfantasyviipc.com/images/media_cloud_big.jpg";

        ImageRequest ir = new ImageRequest(web_url2, new Response.Listener<Bitmap>() {

            @Override
            public void onResponse(Bitmap response) {
                imageview.setImageBitmap(response);
                Log.d("image was ", "set");
            }

            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(), "ERROR: " + error.getMessage(), Toast.LENGTH_SHORT).show();
                Log.d("ERROR", error.getMessage());
            }
        }, 0, 0, null, null);

        requestQueue.add(ir);

如您所见,第二个 URL 工作正常,但第一个 URL,带有许多反斜杠和正斜杠的 return 将不是图像。您可以将两者都复制到您的浏览器中,它们工作正常,但我的 Android 解析无法读取第一个。有没有人对如何从第一个 link 获取图像有任何建议?我尝试过的几乎所有东西都使用字符串,这似乎是问题的核心部分。

感谢您的帮助!

-锡尔

You can copy both into your browser and they work fine, but the first one cannot be read by my Android parsing

第一个 URL 肯定是格式错误,但它在浏览器中工作的原因是它们自动将反斜杠转换为正斜杠,并且大多数网络服务器倾向于忽略多个连续的正斜杠。

例如,如果我在Chrome(OSX)中输入那个URL,地址栏中的URL就会变成:

http://static.giantbomb.com///uploads///square_avatar///8///87790///1814630-box_ff7.png

这似乎工作正常。因此,要解决 Android 上的问题,只需执行相同的操作:

web_url = web_url.replace("\", "/");

甚至更好:

web_url = web_url.replace("\", "");

这应该会将 URL 转换为 http://static.giantbomb.com/uploads/square_avatar/8/87790/1814630-box_ff7.png,从而解决您的问题。