2

我的朋友正在使用 C# 编写一个用于请求网页的简单程序。但是,他在尝试请求指定网页时遇到了问题。他已经尝试在请求中设置所有的标头和cookie,但仍然出现超时异常。示例网页是https://my.ooma.com

这是代码:

string url = "https://my.ooma.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 30000;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5";
request.Method = "GET";
request.CookieContainer = new CookieContainer();
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers.Add("Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3");
request.Headers.Add("Accept-Encoding:gzip,deflate,sdch");
request.Headers.Add("Accept-Language:en-US,en;q=0.8");
request.KeepAlive = true;                 

WebResponse myResponse = request.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream());
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close();

所有标题与使用 Chrome 浏览网页时相同。而且他没有看到使用 Chrome 开发者工具设置的任何 cookie。有人可以使用 C# 成功请求页面吗?非常感谢。

4

1 回答 1

1

对不起,来晚了。以下代码片段应该可以正常工作。我还尝试使用包含“getodds.xgi”的旧网址,它也运行良好。服务器对仅使用安全超文本传输​​协议 (HTTPS) 方案的连接使用安全套接字层 (SSL) 协议。

如果它们只是为了获得响应,则不需要设置任何 UserAgent 或 Header。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
WebRequest request = WebRequest.Create("http://my.ooma.com/");
string htmlResponse = string.Empty;
using (WebResponse response = request.GetResponse())
{
     using (StreamReader reader = new StreamReader(response.GetResponseStream()))
     {
         htmlResponse = reader.ReadToEnd();
         reader.Close();
     }
     response.Close();
}
于 2012-05-31T03:52:20.823 回答