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

以下を Cookie に追加します, domain=.receita.fazenda.gov.br。これは、あなたの Cookie が のサブドメインで使用できることを示していますreceita.fazenda.gov.br。Cookie に関する RFC を参照するか、このウィキペディアの記事を使用してください。

更新: OP を読み直すと、うまくいかないことがいくつかあるかもしれません。

1つのことは、リクエストを行うときにサイトがCookieを設定していないことですwww8.receita.fazenda.gov.br(他の人が述べたように)。または、サイトがdomainへの要求に対する応答で送信される Cookie のフィールドを設定しませんでしたwww.receita.fazenda.gov.br。おそらく前者だと思います。リクエストが行われたときに、Web サーバーによって Cookie が設定されていません。

もう 1 つの問題は、おそらく正しいサイトの Cookie ヘッダーを要求するのを忘れたことです?? 上のコード行にはConsole.WriteLine(cookies.GetCookieHeader(site));、とは異なるsitea にハードコードされています。その場合は、リクエストが行われたサイトとは別のサイトの Cookie をリクエストしています。System.Uriwww8.receita.fazenda.gov.br

于 2013-06-19T14:26:12.290 に答える
0

新しい URL のサーバーは Cookie を設定しようとしないため、もちろんコンテナーには Cookie はありません。ASP コードを変更して Cookie を設定すると、動作するようになります。

于 2013-06-19T14:24:41.727 に答える