2013-06-19 28 views
0

大家好,我有後續的代碼的CookieContainer返回空

 Uri site = new Uri("http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/Cnpjreva_Solicitacao2.asp"); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(site); 
     CookieContainer cookies = new CookieContainer(); 
     request.CookieContainer = cookies; 

     //Console.WriteLine(cookies.GetCookieHeader(site)); 

     //Get the response and print out the cookies again 
     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
     { 
      Console.WriteLine(cookies.GetCookieHeader(site)); 
     } 

     Console.Write("end"); 

     Console.ReadKey(); 

那麼這段代碼返回cookie確定,但如果我更改URI到http://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATBHE/ConsultaOptantes.app/ConsultarOpcao.aspx它無法正確顯示它的返回空

任何人都可以幫助我解決這個問題?

+0

我期望從www到www8的變化意味着你得到一個空的cookie集合。如果您在receita.fazenda.gov.br上設置了可以正常工作的cookie –

回答

0

新URL處的服務器不會嘗試設置任何cookie,因此容器中當然不會有cookie。修改你的ASP代碼來設置一個cookie,它會起作用。

+0

是的,如果我使用瀏覽器打開Chrome瀏覽器,它會顯示Cookie –

+0

發送到我的瀏覽器的響應中沒有Cookie標頭。 –

0

將以下內容添加到您的Cookie中:, domain=.receita.fazenda.gov.br。這表示您的Cookie可以與receita.fazenda.gov.br的任何子域一起使用。看一看關於cookies的RFC或者使用這個Wikipedia文章。

更新:重新閱讀您的OP,可能會有一些事情可能會出現錯誤。

有一件事是該網站在提出www8.receita.fazenda.gov.br(如其他人提到的)請求時未設置cookie。或者,該網站未將與請求響應一起發送的cookie的domain字段設置爲www.receita.fazenda.gov.br。我想這可能是前面的—這個cookie在請求發出時沒有被web服務器設置。

另一件事可能是你忘了要求正確的網站cookie標頭?上面,您有一行代碼,其內容爲Console.WriteLine(cookies.GetCookieHeader(site));,其中site已硬編碼爲與www8.receita.fazenda.gov.br不同的System.Uri。如果是這種情況,那麼您正在請求不同於請求所針對的站點的Cookie。

+0

你好,但我不'有一個cookie我應該怎麼做?因爲我試圖從我的請求中獲取cookie –