0

大家好,我有以下代码

        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它没有正确显示它返回空

任何人都可以帮我解决这个问题吗?

4

2 回答 2

0

新 URL 的服务器不会尝试设置任何 cookie,因此容器中当然没有 cookie。修改您的 ASP 代码以设置一个 cookie,它将起作用。

于 2013-06-19T14:24:41.727 回答
0

将以下内容添加到您的 cookie , domain=.receita.fazenda.gov.br:. 这表示您的 cookie 可以与receita.fazenda.gov.br. 查看有关 cookie 的 RFC 或使用此Wikipedia文章。

更新:重新阅读您的 OP,可能有一些事情可能会出错。

一件事是网站在发出请求时没有设置cookie www8.receita.fazenda.gov.br(正如其他人所提到的)。或者,该站点没有将domain随请求响应一起发送的 cookie 的字段设置为www.receita.fazenda.gov.br. 我认为很可能是前者——发出请求时 Web 服务器没有设置 cookie。

另一件事是您可能忘记为正确的站点请求 cookie 标头?上面,您有一行代码读取Console.WriteLine(cookies.GetCookieHeader(site));,其中site硬编码为与System.Uri不同的a www8.receita.fazenda.gov.br。如果是这种情况,那么您请求的 cookie 是与发出请求的站点不同的站点。

于 2013-06-19T14:26:12.290 回答