C#学习教程:从HttpWebResponse中检索多个“Set-Cookie”标头我遇到了一个绊脚石,我无法访问HttpWebResponse的所有“Set-Cookie”标头。Fiddler在回复的标题中显示以下cookie:Set-Cookie:B=733jjvp7f5g8f&b=4&d=1pFN8bVpYFYaPUme88.fc6ZzTSI-&s=kc&i=.1p3Ei3yvwqZjo0gcg7D;expires=Sun,22-Dec-201305:33:04GMT;路径=/;domain=.yahoo.com设置Cookie:F=a=GYsABKAMvTZoTcNAPKUXrclX_Hb77EA7I_62nONz8QeEwNevHwqJ_NyizED88uhv9aMx.9o-&b=3tN5;expires=Sun,22-Dec-201305:33:04GMT;路径=/;domain=.yahoo.comSet-Cookie:Y=v=1&n=0v251rt3ifppb&l=0kii84if0h70ma/o&p=m2fvvau012000000&iz=1111&r=if&lg=en-AU&intl=au&np=1;路径=/;domain=.yahoo.comSet-Cookie:PH=fn=jW23i4lnq1UpiP.lsuU-&l=en-AU;expires=Sun,22-Dec-201305:33:04GMT;路径=/;domain=.yahoo.comSet-Cookie:T=z=QEs8OBQYTBPBEZq31nTCqv1MzNPBjUwTjcwMDZOTjY-&a=YAE&sk=DAAtoxgrYmWIMk&ks=EAA3Ha0H7qyCT8P3cI9NWJrIA--~E&d=c2wBTkRRNEFUSTNPVEEzTnpFNU9URS0BYQFZQUUBZwFCRFZQTkRSSjJQRVRDTEdFT0xCQ1hER0VVUQFvawFaVzAtAXRpcAF2MkNUVUEBenoBUUVzOE9CQTdF;路径=/;domain=.yahoo.comSet-Cookie:SSL=v=1&s=kTc532PQYAe1iT.23Q55E50ZdoOAdEK_fshc3g_YZ3SxszcbuHkmpJUAQ7RT67nDNA0nXyX68um90ZuS9RQztQ--&kv=0;路径=/;域名=.yahoo.com;网络请求:varuserAuthWebRequest=WebRequest.Create(uri)asHttpWebRequest;varresponse=userAuthWebRequest.GetResponse()作为HttpWebResponse;//转储标头以进行调试:Debug.WriteLine(string.Format("Set-Cookie:{0}",response.Headers.Get("Set-Cookie")));我的调试输出返回:Set-Cookie:B=733jjvp7f5g8f&b=3&s=b1;expires=Sun,22-Dec-201305:33:03GMT;路径=/;domain=.yahoo.com有趣的是,如果我向Headers.GetValues发出类似的请求,它实际上会返回“Set-Cookie”标头的两个实例,这两个实例似乎是连接在一起的:foreach(varheaderNameinresponse.Headers.AllKeys){foreach(varvaluesinresponse.Headers.GetValues(headerName)){Debug.WriteLine("{0}:{1}",headerName,values);}}输出:Set-Cookie:B=733jjvp7f5g8f&b=3&s=b1;expires=SunSet-Cookie:22-Dec-201305:33:03GMT;路径=/;域名=.雅虎。com我已经看到一些其他问题确认原始标头无法通过HttpWebResponse对象获得,我应该调查使用套接字解决方案我将检查FiddlerCore看看我是否有运气,但如果有人有任何其他我很乐意看到他们的指示。谢谢!您通常希望使用“CookieCollection”类来处理解析和处理set-cookie标头。有关如何实现它的帮助,请查看MSDN中的示例(HttpWebRequest.CookieContainer):以上是C#学习教程:从HttpWebResponse中检索多个“Set-Cookie”标头需要了解更多有关C#学习教程,希望大家会多加注意——使用System.Net;使用系统;namespaceExamples.System.Net.Cookies{//这个例子是在命令行运行的。//指定一个参数:要将请求发送到的主机的名称。//如果请求成功,该示例显示cookie的内容//由主机返回。publicclassCookieExample{publicstaticvoidMain(string[]args){if(args==null||args.Length!=1){Console.WriteLine("指定接收请求的URL。");环境.退出(1);}HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(args[0]);request.CookieContainer=newCookieContainer();HttpWebResponse响应=(HttpWebResponse)request.GetResponse();//打印每个cookie的属性。foreach(Cookiecookinresponse.Cookies){Console.WriteLine("Cookie:");安慰。写Line("{0}={1}",cook.Name,cook.Value);Console.WriteLine("域名:{0}",cook.Domain);Console.WriteLine("路径:{0}",cook.Path);Console.WriteLine("端口:{0}",cook.Port);Console.WriteLine("安全:{0}",cook.Secure);Console.WriteLine("发出时:{0}",cook.TimeStamp);Console.WriteLine("Expires:{0}(过期?{1})",cook.Expires,cook.Expired);Console.WriteLine("不保存:{0}",cook.Discard);Console.WriteLine("评论:{0}",cook.Comment);Console.WriteLine("评论Uri:{0}",cook.CommentUri);Console.WriteLine("版本:RFC{0}",cook.Version==1?"2109":"2965");//显示cookie的字符串表示形式。Console.WriteLine("字符串:{0}",cook.ToString());}}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
