Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';不要根据我的要求使用CookieContainer,只有手工制作的cookie才有效:\_C#_Cookies_Httpwebrequest_Html Agility Pack - Fatal编程技术网

C# Can';不要根据我的要求使用CookieContainer,只有手工制作的cookie才有效:\

C# Can';不要根据我的要求使用CookieContainer,只有手工制作的cookie才有效:\,c#,cookies,httpwebrequest,html-agility-pack,C#,Cookies,Httpwebrequest,Html Agility Pack,我正在做另一个项目,在那里我使用http web请求。 目前我在一些请求上使用cookie容器,但我发现它在这个特定的请求上不起作用。 我正在通过http请求更改网站的页面,请求它查找每个页面并从中下载我想要的信息,但是由于页面url是隐藏的,如果你按返回浏览器,它在进入主页之前不会进入页面 我发现请求的主体可以更改页面,当我使用fiddler获得的cookie时,它就起作用了。但由于我尝试了cookiecontainer,所有页面上的信息都与第一页相同 for (int

我正在做另一个项目,在那里我使用http web请求。 目前我在一些请求上使用cookie容器,但我发现它在这个特定的请求上不起作用。 我正在通过http请求更改网站的页面,请求它查找每个页面并从中下载我想要的信息,但是由于页面url是隐藏的,如果你按返回浏览器,它在进入主页之前不会进入页面

我发现请求的主体可以更改页面,当我使用fiddler获得的cookie时,它就起作用了。但由于我尝试了cookiecontainer,所有页面上的信息都与第一页相同

            for (int i = 2; i <= _TotalPag; i++)
            {
                try
                {
                    int _pagina = i;
                    HttpWebResponse response3;
                    HttpWebRequest request3 = (HttpWebRequest)WebRequest.Create(lista_links_categorias[cbo_categorias.SelectedIndex]);

                    request3.KeepAlive = true;
                    request3.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36";
                    request3.Accept = "*/*";
                    request3.Referer = "xxxxxxxxxxx";
                    request3.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8,pt;q=0.6");

                    CookieContainer cookieContainer3 = new CookieContainer();
                    request3.CookieContainer = cookieContainer3;

                    request3.Method = "POST";
                    request3.ServicePoint.Expect100Continue = false;

                    string _body;
                    if (i == 2)
                    {
                        _body = @"M%24M%24sM1=M%24M%24sM1%7CM%24M%24lPH%24lCPH%24cCatBrw%24cPL%24btPagCommd&__EVENTTARGET=M%24M%24lPH%24lCPH%24cCatBrw%24cPL%24btPagCommd&__EVENTARGUMENT=&__VIEWSTATE_KEY=cafb3561-af6f-4e78-bc31-b71166377d8e&__VIEWSTATE=&txtQ=&orderby=DisplayName&orderby=ASC&produtos=21&orderby=DisplayName&orderby=ASC&produtos=21&hdnPrdListData=1%24%242&hdnCatalogBrowser=&txtEmail=&txtPass=&__ASYNCPOST=true&";
                    }
                    else
                    {
                        _body = @"M%24M%24sM1=M%24M%24sM1%7CM%24M%24lPH%24lCPH%24cCatBrw%24cPL%24btPagCommd&__VIEWSTATE=&txtQ=&orderby=DisplayName&orderby=ASC&produtos=21&orderby=DisplayName&orderby=ASC&produtos=21&hdnPrdListData=1%24%24" + _pagina + "&hdnCatalogBrowser=&txtEmail=&txtPass=&__EVENTTARGET=M%24M%24lPH%24lCPH%24cCatBrw%24cPL%24btPagCommd&__EVENTARGUMENT=&__VIEWSTATE_KEY=cafb3561-af6f-4e78-bc31-b71166377d8e&__ASYNCPOST=true&";
                    }
                    byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(_body);


                    request3.ContentLength = postBytes.Length;
                    Stream stream = request3.GetRequestStream();
                    stream.Write(postBytes, 0, postBytes.Length);
                    stream.Close();

                    using (response3 = (HttpWebResponse)request3.GetResponse())
                    {
                        var responseValue = string.Empty;
                        // grab the response  
                        using (var responseStream = response3.GetResponseStream())
                        {
                            using (var reader = new StreamReader(responseStream))
                            {
                                responseValue = reader.ReadToEnd();

                            }
                        }
                        if (responseValue != "")
                        {
                            string _txtFileNew = @"xxxxxxxxxx\Pagina" + _pagina + ".txt";
                            StreamWriter _srEannew = new StreamWriter(_txtFileNew, true, Encoding.UTF8);
                            _srEannew.WriteLine(responseValue);
                            _srEannew.Close();

                        }
                    }

                    HtmlAgilityPack.HtmlDocument doc3 = new HtmlAgilityPack.HtmlDocument();
                    doc3.Load(@"xxxxxxxx\Pagina" + _pagina + ".txt");
                    HtmlNodeCollection collection2 = doc3.DocumentNode.SelectNodes(".//div[@class='produtoGrelha']");
                    foreach (HtmlNode node2 in collection2)
                    {
                        string _ID = node2.Attributes["p"].Value.Replace("/n", string.Empty).Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("&nbsp;", string.Empty).Trim();
                        lista_ids_prods.Add(_ID);
                    }
                }

for(int i=2;i尝试在for循环之前初始化CookieContainer

CookieContainer cookieContainer3 = new CookieContainer();
for (int i = 2; i <= _TotalPag; i++)
{
    ...
    request3.CookieContainer = cookieContainer3;
    ...
}
CookieContainer CookieContainer 3=新CookieContainer();

对于(int i=2;我没有工作,仍然是相同的,所有页面的内容都与第一个页面相同:\n哦,您需要使用第一个请求使用的Cookie容器。如果您使用新的Cookie容器,则从第一个请求发送的设置Cookie头将丢失。另外,请确保请求的域名相同,否则将不会发送Cookie。我不是u在我的任何请求中使用sing request.Headers.Set(HttpRequestHeader.Cookie,…)。我只使用CookieContainer。如果我像以前那样设置Cookie(没有CookieContainer,请求工作时),cookie将过期,程序将停止工作,除非我在代码上手动更改cookie,这就是为什么我开始在主页请求和第一页中使用CookieContainer,但如果我更改页面,就像我说的,响应将是相同的。除非问题出在我使用的旧主体中,因为我不理解我也没有设置域,sry为添加另一个答案,但我在前面的评论中没有空间