2011-02-01 22 views
2

我正在使用siteripper/screenscraper查找皇家郵件網站上的跟蹤信息。不幸的是,皇家郵政不支持API,所以這是做到這一點的方法。從HTTPS站點下載數據時出現異常

無論我做什麼,我總是收到相同的異常。 (遠程服務器返回錯誤:(500)內部服務器錯誤

我的基本代碼是:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string url = "http://track.royalmail.com/portal/rm/track?catId=22700601&gear=authentication&forcesegment=SG-Personal"; 
     byte[] response; 

     WebClient webClient = new WebClient(); 
     response = webClient.DownloadData(url); 
    } 
} 

我已經使用小提琴手,調查通過我的瀏覽器中所作的數據交易爲了模仿我的代碼。我可以看到英國皇家郵政使用cookies,所以我試圖實現,它通過添加cookie處理程序,以支持餅乾的WebClient:

public class CookieAwareWebClient : WebClient 
{ 
    private CookieContainer m_container = new CookieContainer(); 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 
     if (request is HttpWebRequest) 
     { 
      (request as HttpWebRequest).CookieContainer = m_container; 
     } 
     return request; 
    } 
} 

但是這並沒有幫助eather :-(

我有還嘗試通過Royal Mails SSL保護網站(https://www.royalmail.com/portal/sme/track?catId=62200738&mediaId=63900708)查詢跟蹤信息,並將憑據寫入我的C#程序,但沒有運氣。

我現在遇到了牆,我一直碰到相同的教程/線程似乎不再幫助我。

我希望有一個輝煌的大腦在那裏:-)

回答

3

如果你把所有你應該停止獲取500錯誤

string url = "http://track.royalmail.com/portal/rm/trackresults?catId=22700601&pageId=trt_rmresultspage&keyname=track_blank&_requestid=17931"; 
using(WebClient webClient = new WebClient()) { 
    webClient.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)"; 
    webClient.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
    webClient.Headers["Accept-Language"] = "en-us,en;q=0.5"; 
    webClient.Headers["Accept-Encoding"] = " gzip,deflate"; 
    webClient.Headers["Accept-Charset"] = "ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
    byte[] response = webClient.DownloadData(url); 
} 
+0

非常感謝你的頭,它的工作原理就像一個冠軍! – chjortlund 2011-02-01 09:48:44