2012-05-28 56 views
2

我的朋友正在使用C#編寫一個簡單的程序來請求一個網頁。 但是,當他嘗試請求指定的網頁時遇到問題。 他已經嘗試在請求中設置所有的頭和cookie,但它仍然有超時異常。 示例網頁爲https://my.ooma.comC#請求一個網頁失敗,但使用網絡瀏覽器成功(良好的檢查頭和餅乾)

下面是代碼:

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#的頁面嗎? 非常感謝。

+0

他遇到了什麼問題? –

+0

他無法獲取該網頁的源內容。該程序保持超時操作異常。 – Tak

+0

也許該網頁必須添加一些指定的標頭/ cookies,但我不能這些。 – Tak

回答

1

對不起,遲到了。 下面的代碼片段應該工作得很好。我也嘗試了帶有「getodds.xgi」的巡視舊URL,它也工作正常。 服務器僅對使用安全超文本傳輸​​協議(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(); 
} 
相關問題