HttpWebRequest错误:503服务器不可用

我正在使用HttpWebRequest,执行GetResponse()时出错。

我用这个代码:

private void button1_Click(object sender, EventArgs e) { Uri myUri = new Uri("http://www.google.com/sorry/?continue=http://www.google.com/search%3Fq%3Dyamaha"); // Create a 'HttpWebRequest' object for the specified url. HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri); // Set the user agent as if we were a web browser myHttpWebRequest.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"; HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); var stream = myHttpWebResponse.GetResponseStream(); var reader = new StreamReader(stream); var html = reader.ReadToEnd(); // Release resources of response object. myHttpWebResponse.Close(); textBox1.Text = html; } 

服务器确实返回503 HTTP状态代码。 但是,它还会返回响应正文以及503错误条件(如果打开该URL,则会在浏览器中看到的内容)。

您可以访问exception的Response属性中的Response (如果有503响应,则引发的exception是WebException ,它具有Response属性)。 你需要捕获这个exception并正确处理它

具体来说,您的代码可能如下所示:

 string html; try { var myUri = new Uri("http://www.google.com/sorry/?continue=http://www.google.com/search%3Fq%3Dyamaha"); // Create a 'HttpWebRequest' object for the specified url. var myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri); // Set the user agent as if we were a web browser myHttpWebRequest.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"; var myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); var stream = myHttpWebResponse.GetResponseStream(); var reader = new StreamReader(stream); html = reader.ReadToEnd(); // Release resources of response object. myHttpWebResponse.Close(); } catch (WebException ex) { using(var sr = new StreamReader(ex.Response.GetResponseStream())) html = sr.ReadToEnd(); } textBox1.Text = html;