C# Can';不要根据我的要求使用CookieContainer,只有手工制作的cookie才有效:\
我正在做另一个项目,在那里我使用http web请求。 目前我在一些请求上使用cookie容器,但我发现它在这个特定的请求上不起作用。 我正在通过http请求更改网站的页面,请求它查找每个页面并从中下载我想要的信息,但是由于页面url是隐藏的,如果你按返回浏览器,它在进入主页之前不会进入页面 我发现请求的主体可以更改页面,当我使用fiddler获得的cookie时,它就起作用了。但由于我尝试了cookiecontainer,所有页面上的信息都与第一页相同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
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(" ", 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为添加另一个答案,但我在前面的评论中没有空间