2017-05-25 37 views
0

Corfo基於cookie工作,當它被請求www.corfo.cl時,它首先被髮送到www.corfo.cl/sites/cpp/home,然後在/ sites /文件夾中,cookie設置jsessionid = OHS_1〜T8w78ZolfWgr3ZoEBBvE81nBiXbXIdjfF1In3bgpZiYvL_w8TF4p! 1081543155! -596930586等Cookie Scrapy C#

有了這個cookie,這個頁面就構建了與此jsessionid相關的所有/某些組件。

如果客戶端代碼沒有處理該邏輯,服務器將按預期重置連接,因爲服務器不知道如何在沒有jsessionid的情況下構建此頁面。

如何設置cookie以便進入頁面? 我的代碼如下:

var a = "https://www.corfo.cl"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(a); 
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"; 
request.Method = "get"; 
IWebProxy prox = request.Proxy; 
prox.Credentials = CredentialCache.DefaultCredentials; 
var getHtmlWeb = new HtmlWeb(); 
getHtmlWeb.UseCookies = true; 
CookieContainer cookies = new CookieContainer(); 
request.CookieContainer = cookies; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
var paginaInicio = getHtmlWeb.Load(a); 

回答

0

如果你能獲得一個匿名請求JSESSIONID,您可以創建一個cookie並把它添加到您的Cookie容器。我不確定你在發佈的代碼之外發生了什麼,但看起來你包含一個CookieContainer「cookies」的空實例。

您可以將Cookie添加到的CookieContainer下面,如果你知道這個名字和價值的聲明

Cookie chocolateChip = new Cookie("CookieName", "CookieValue") { Domain = "DomainName" }; 

cookie的實例代碼是從這個SO問題:HttpWebRequest: Add Cookie to CookieContainer -> ArgumentException (Parametername: cookie.Domain)

+0

的代碼只有上面的一個,外面什麼都沒有。 當您運行時,會發生錯誤: {「驗證失敗,因爲遠程方關閉了傳輸流。」} 我添加了您說的內容,但仍然無效。 –