C#Store app检查URL中的图片是否可用

时间:2014-08-25 13:22:02

标签: c# url windows-store-apps

我正在制作一个包含图片的C#商店应用。我从网站上获取了图片,例如:http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG

我有2张图片,1张是实际产品的图片。 1图像是没有可用图像的图像。现在我想检查给定URL后面是否有图片,如果没有,我想加载没有图像的图像。

我有一个对象产品,其中包含itemnumber,description和imagepath。在这一点上,我只是这样做。

var url = "http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG";
Product p = new product (123, "productdescription", url);

if(url //如果没有给出结果){p.url = imgpath2} //文件路径没有图像可用图片

如何简单检查给定网址是否包含图片,还是会给我一个"网页不可用" /没有内容可用错误?提前谢谢。

编辑:注意*我正在使用visual studio 2013,我正在构建一个C#商店应用程序。

2 个答案:

答案 0 :(得分:3)

无需下载整个图像,只需使用HEAD:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("url");
request.Method = "HEAD";

bool exists;
try
{
    request.GetResponse();
    exists = true;
}
catch
{
   exists = false;
}

有关详情,请查看this post以获取有关您的问题的帮助:


[更新:如果您想以异步方式拨打电话...]

// Initialize your product with the 'blank' image
Product p = new Product(123, "productdescription", imgpath2);

// Initialize the request
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("url");
request.Method = "HEAD";

// Get the response async
Task<WebResponse> response = request.GetResponseAsync();

// Get the response async
response.AsAsyncAction().Completed += (a, b) =>
    {
        // Assign the proper image, if exists, when the task is completed
        p.URL = url;
    };

答案 1 :(得分:0)

试试这个:

    var url = "http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG";
    if(File.Exists(url)){
         Product p = new product (123, "productdescription", url);
    }
    else{
         Product p = new product (123, "productdescription", imgpath2);
    }

如果文件存在则应返回true,否则返回false。

如果您想了解如何找出网址是否为您提供任何响应,您还可以查看以前的主题: C# How can I check if a URL exists/is valid?