我试图创建与ASP.NET网站上的HttpWebRequest / HttpWebResponse会议以后通过解析网址参数的HTML表单(这一部分,我知道该怎么做),但我不知道如何解析和设置饼干,如会话ID。在提琴手,它表明了ASP.NET会话ID在响应请求的URL /路径通过的Set-Cookie回来了,但我怎么能提取该会话ID并将其设置为下一个cookie中的HttpWebRequest ?据我所知,这个设置Cookie标头将在HttpWebResponse.Headers.Keys找到,但有一个直接的路径解析呢?谢谢!

有帮助吗?

解决方案

在.NET框架将管理Cookie为您服务。你不必与解析cookie信息出来的头或添加一个cookie头对您的请求关心自己。

要存储和发送您的会话ID,使用 Cookie CookieContainer 类来存储它们,然后确保你的每个请求发送您的Cookie。

下面的示例示出了如何执行此操作。所述的CookieContainer,“cookieJar”可跨多个域和请求共享。一旦你把它添加到一个请求对象,对它的引用也将被添加到时被返回的响应的响应对象。

CookieContainer cookieJar = new CookieContainer();

var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;

var response = request.GetResponse();

foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
{
    Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
}

此代码的输出将是:

  

Cookie['PREF']: ID=59e9a22a8cac2435:TM=1246226400:LM=1246226400:S=tvWTnbBhK4N7Tlpu

其他提示

这是丹·赫伯特的回答让我真的。我感谢你的帮助。

只是想发表我的使用 - 希望它可以帮助一些在一个的某个时间点。我的要求是,我需要从第一HTTP POST响应于第二HTTP POST请求发送回饼干。

第一

CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
....

CookieCollection setCookies = cookieJar.GetCookies(request.RequestUri);

第二

CookieContainer cc = new CookieContainer();
cc.Add(setCookies);    
request.CookieContainer = cc;

我有同样的问题(与Amazon) 我用下面的正则表达式:

string regexp = "(?<name>[^=]+)=(?<val>[^;]+)[^,]+,?";);
MatchCollection myMatchCollection = Regex.Matches(cookiesStr, regexp);
foreach (Match myMatch in myMatchCollection)
{
string cookieName = myMatch.Groups["name"].ToString();
string cookieVal = myMatch.Groups["val"].ToString();
Cookie cookie = new Cookie(cookieName, cookieVal);
cookies.Add(cookie);
}

请注意,我只关心cookie的名称/值...

好运 Elia的

呜呜我可能是错的,但是从我所观察最近

从第一响应饼干,不包括在的情况下,“设置cookie的”作为Cookie等进来的报头(例如一些会话ID ...)302(重定向)状态

如果该autofollowredirect被设置为真,则该组的cookie被处理,并且其是自动完成的后续请求,将包括通过集饼干在第一呼叫定义的那些饼干

如果autofollowredirect设置为false,那么第一个请求没有得到通过设置cookie的positionned饼干,我想,这也是我的queston如果有谁知道,只有这样,才能随后在接下来的请求,这些cookie是解析组Cookie?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top