如何解析HttpWebResponse.Headers.Keys用于返回一个Set-Cookie的会话ID
-
20-08-2019 - |
题
我试图创建与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?