How to get status code from webclient?

前端 未结 10 1890
轮回少年
轮回少年 2020-11-29 04:03

I am using the WebClient class to post some data to a web form. I would like to get the response status code of the form submission. So far I\'ve found out how

10条回答
  •  借酒劲吻你
    2020-11-29 04:49

    If you are using .Net 4.0 (or less):

    class BetterWebClient : WebClient
    {
            private WebRequest _Request = null;
    
            protected override WebRequest GetWebRequest(Uri address)
            {
                this._Request = base.GetWebRequest(address);
    
                if (this._Request is HttpWebRequest)
                {
                    ((HttpWebRequest)this._Request).AllowAutoRedirect = false;
                }
    
                return this._Request;
            } 
    
            public HttpStatusCode StatusCode()
            {
                HttpStatusCode result;
    
                if (this._Request == null)
                {
                    throw (new InvalidOperationException("Unable to retrieve the status 
                           code, maybe you haven't made a request yet."));
                }
    
                HttpWebResponse response = base.GetWebResponse(this._Request) 
                                           as HttpWebResponse;
    
                if (response != null)
                {
                    result = response.StatusCode;
                }
                else
                {
                    throw (new InvalidOperationException("Unable to retrieve the status 
                           code, maybe you haven't made a request yet."));
                }
    
                return result;
            }
        }
    

    If you are using .Net 4.5.X or newer, switch to HttpClient:

    var response = await client.GetAsync("http://www.contoso.com/");
    var statusCode = response.StatusCode;
    

提交回复
热议问题