大家好,我有以下代码
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 OK,但是如果我将URI更改为http://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATBHE/ConsultaOptantes.app/ConsultarOpcao.aspx,它将不能正确显示,它将返回空
有人能帮我解决这个问题吗?
发布于 2013-06-19 22:24:42
位于新URL的服务器不会尝试设置任何cookie,因此容器中当然没有cookie。修改你的ASP代码来设置一个cookie,它就可以工作了。
发布于 2013-06-19 22:26:12
将以下内容添加到您的cookie:, domain=.receita.fazenda.gov.br。这说明您的cookie可以与receita.fazenda.gov.br的任何子域一起使用。看看RFC on cookies或使用这篇Wikipedia文章。
更新:重新阅读你的操作,可能有一些事情会出错。
一件事是,站点在请求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与请求所针对的站点不同。
https://stackoverflow.com/questions/17193695
复制相似问题