Приложение C # Store проверяет, доступна ли картинка в URL

1

Я делаю приложение магазина С#, которое содержит фотографии. Я получаю фотографии с веб-сайта, например: 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, и я создаю приложение для магазина С#.

  • 0
    Как выглядит конструктор Product?
Теги:
url
windows-store-apps

2 ответа

2

Не нужно загружать все изображение, просто используйте 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;
    };
  • 0
    Я вижу, как это может работать. Но проблема в том, что я делаю приложение для магазина C #. Единственная доступная для меня операция - request.GetResponsAsync (); что требует от меня сделать метод асинхронным. Короче говоря: Когда я ввожу недопустимый веб-адрес, он выдаст мне следующую ошибку: Первое исключение типа «System.Net.WebException» произошло в mscorlib.dll Дополнительная информация: Не удалось разрешить удаленное имя
  • 0
    Вы можете выполнить синхронизирующий вызов следующим образом: WebResponse response = request.GetResponseAsync (). Result;
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.

Если вы хотите посмотреть, как узнать, как выяснить, дает ли URL-адрес вам какой-либо ответ, вы также можете взглянуть на эту предыдущую тему: С# Как проверить, существует ли URL-адрес/является действительным?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню