MilkBottle
MilkBottle

Reputation: 4332

How to get exception/ error that raise by HttpWebrequest for Wp7

There are times that server shutdown, file missing on server and other problem. So, I want to trap or catch the exception thrown by HttpWebRequest when using Dispatcher thread to update content on UI.

The below code is unable to catch error and display in MessageBox.show(). Can anyone show me what I need to do? Thanks

    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)
            {

            }
        });
    }

Upvotes: 0

Views: 1047

Answers (3)

John Saunders
John Saunders

Reputation: 161773

First of all, I hope you don't intend to catch all exceptions and ignore them all. You would be ignoring exceptions that have nothing to do with your network connection failing.

Second, you need to place the try/catch around the code that might throw the exception:

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
        }
    });
}

Upvotes: 1

harryovers
harryovers

Reputation: 3138

try using the WebClient object. Then in the completed event handler the error is returned as e.Error

Upvotes: 0

Richard Schneider
Richard Schneider

Reputation: 35477

Place a try/catch around the .EndGetResponse() call. I believe this is where the exception is being thrown.

Upvotes: 1

Related Questions