Android:由于格式问题,我无法下载包含我必须使用的网址的图片

时间:2015-02-07 00:57:25

标签: java android image bitmap android-volley

我正在使用API​​返回照片网址的字符串。然而,它是一种奇怪的格式,它导致我使用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(具有许多向后和向前斜杠的URL)将不会返回图像。您可以将它们都复制到浏览器中并且它们可以正常工作,但是我的Android解析无法读取第一个。有没有人有任何关于如何从第一个链接获取图像的建议?几乎所有我尝试过的东西都使用了Strings,这似乎是问题的核心部分。

感谢您的帮助!

-Sil

1 个答案:

答案 0 :(得分:2)

  

您可以将它们复制到浏览器中并且它们正常工作,但我的Android解析无法读取第一个

第一个网址肯定是格式不正确,但它在浏览器中运行的原因是因为它们会自动将反斜杠转换为正斜杠,而大多数网络服务器往往会忽略多个连续的正斜杠。

例如,如果我在Chrome(OSX)中输入该网址,地址栏中的网址将更改为:

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

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

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

甚至更好:

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

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