How to get status code from webclient?

前端 未结 10 1877
轮回少年
轮回少年 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:59

    This is what I use for expanding WebClient functionality. StatusCode and StatusDescription will always contain the most recent response code/description.

                    /// 
                    /// An expanded web client that allows certificate auth and 
                    /// the retrieval of status' for successful requests
                    /// 
                    public class WebClientCert : WebClient
                    {
                        private X509Certificate2 _cert;
                        public WebClientCert(X509Certificate2 cert) : base() { _cert = cert; }
                        protected override WebRequest GetWebRequest(Uri address)
                        {
                            HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
                            if (_cert != null) { request.ClientCertificates.Add(_cert); }
                            return request;
                        }
                        protected override WebResponse GetWebResponse(WebRequest request)
                        {
                            WebResponse response = null;
                            response = base.GetWebResponse(request);
                            HttpWebResponse baseResponse = response as HttpWebResponse;
                            StatusCode = baseResponse.StatusCode;
                            StatusDescription = baseResponse.StatusDescription;
                            return response;
                        }
                        /// 
                        /// The most recent response statusCode
                        /// 
                        public HttpStatusCode StatusCode { get; set; }
                        /// 
                        /// The most recent response statusDescription
                        /// 
                        public string StatusDescription { get; set; }
                    }
    

    Thus you can do a post and get result via:

                byte[] response = null;
                using (WebClientCert client = new WebClientCert())
                {
                    response = client.UploadValues(postUri, PostFields);
                    HttpStatusCode code = client.StatusCode;
                    string description = client.StatusDescription;
                    //Use this information
                }
    

提交回复
热议问题