Я делаю приложение магазина С#, которое содержит фотографии. Я получаю фотографии с веб-сайта, например: http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG
У меня есть 2 изображения, 1 - изображение фактического продукта. и 1 изображение - это изображение, в котором нет изображения. Теперь я хочу проверить, есть ли изображение за указанным URL-адресом, а если нет, я хочу загрузить изображение, в котором нет изображения.
Я получил объектный продукт, который содержит номер элемента, описание и путь к изображению. На данный момент я просто делаю это.
var url = "http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG";
Product p = new product (123, "productdescription", url);
if (url//если никаких результатов не задано) {p.url = imgpath2}//путь к файлу без изображения
Как я могу сделать простую проверку, если данный URL-адрес содержит изображение или даст мне "недоступную веб-страницу"/отсутствие доступной информации? заранее спасибо.
edit: Примечание * Я работаю с visual studio 2013, и я создаю приложение для магазина С#.
Не нужно загружать все изображение, просто используйте HEAD:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("url");
request.Method = "HEAD";
bool exists;
try
{
request.GetResponse();
exists = true;
}
catch
{
exists = false;
}
Для получения дополнительной информации вы можете проверить этот пост за помощью в своей проблеме:
[Обновить: если вы хотите сделать асинхронный вызов...]
// 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;
};
Попробуй это:
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.
Если вы хотите посмотреть, как узнать, как выяснить, дает ли URL-адрес вам какой-либо ответ, вы также можете взглянуть на эту предыдущую тему: С# Как проверить, существует ли URL-адрес/является действительным?