Как получить исключение / ошибку, вызванную HttpWebrequest для Wp7 - PullRequest
0 голосов
/ 24 марта 2011

В некоторых случаях отключение сервера, отсутствие файла на сервере и другие проблемы. Итак, я хочу перехватить или перехватить исключение, генерируемое HttpWebRequest при использовании потока Dispatcher для обновления содержимого в пользовательском интерфейсе.

Приведенный ниже код не может отловить ошибку и отобразить в MessageBox.show (). Кто-нибудь может показать мне, что мне нужно делать? Спасибо

    HttpWebRequest webReq;
    HttpWebResponse webResp;

    public void GetInfo(string Url)
    {
        webReq = (HttpWebRequest)HttpWebRequest.Create(Url);

        try
        {
            webReq.BeginGetResponse(OnGetBuffer, this);
        }
        catch (Exception e)
        {

        }
    } 

    public void OnGetBuffer(IAsyncResult asr)
    {
        webResp = (HttpWebResponse)webReq.EndGetResponse(asr);

        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            Stream streamResult = webResp.GetResponseStream();

            try
            {

            }
            catch (Exception)
            {

            }
        });
    }

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Прежде всего, я надеюсь, что вы не собираетесь перехватывать все исключения и игнорировать их все. Вы будете игнорировать исключения, которые не имеют никакого отношения к сбою сетевого подключения.

Во-вторых, вам нужно поместить try / catch вокруг кода, который может вызвать исключение:

public void OnGetBuffer(IAsyncResult asr)
{
    HttpWebResponse webResp;
    try
    {
        webResp = (HttpWebResponse)webReq.EndGetResponse(asr);
    }
    Catch (WebException ex)
    {
        // Do something to decide whether to retry, then retry or else
        throw; // Re-throw if you're not going to handle the exception
    }

    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        using (Stream streamResult = webResp.GetResponseStream())
        {
            // Do something with the stream
        }
    });
}
1 голос
/ 24 марта 2011

Поместите try / catch вокруг вызова .EndGetResponse ().Я полагаю, что именно здесь создается исключение.

0 голосов
/ 24 марта 2011

попробуйте использовать объект WebClient.Затем в обработчике завершенного события ошибка возвращается как e.Error

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...