码迷,mamicode.com
首页 > Windows程序 > 详细

c# Cookies中不能包含逗号的解决方案

时间:2015-01-19 11:04:21      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:winform   c#   cookie   cookies   

这是MSDN中的说明:

异常 条件
CookieException

name 为 null 或空字符串 ("")。

- 或 -

name 包含未经授权的字符。 使用以下字符之一将会导致异常:

  • 等号 (=)

  • 分号 (;)

  • 逗号 (,)

  • 换行符 (\n)

  • 回车符 (\r)

  • 制表符 (\t)

  • 空格字符

  • 美元符号 ($) 作为第一个字符

  • - 或 -

value 为 null,或者包含分号 (;) 或逗号 (,),而它们不包含在转义的双引号中。


逗号字符保留用作同一行上各个 Cookie 之间的分隔符。 下面的示例演示如何在 value 中使用逗号。

System.Net.Cookie cookie = new System.Net.Cookie("cookieID", "\"123,456\"");

第一种方法:


</pre><pre name="code" class="csharp">string cookieStr = webBrowser1.Document.Cookie;
                    if (!cookieStr.Contains("JSESSION_ID"))
                    {
                        return;
                    }
                    string[] cookstr = cookieStr.Split(';');
                    foreach (string str in cookstr)
                    {
                        string[] cookieNameValue = str.Split('=');
                        string cookieName = cookieNameValue[1].Trim().ToString();
                        cookieName = cookieName.Replace(",", "%2c");
                      
                        Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieName);
                        ck.Domain = webBrowser1.Document.Domain;
                        myCookieContainer.Add(ck);
                    }



第二种方法:

string cookieStr = webBrowser1.Document.Cookie;
                    if (!cookieStr.Contains("JSESSION_ID"))
                    {
                        return;
                    }
                    string[] cookstr = cookieStr.Split(';');
                    foreach (string str in cookstr)
                    {
                        string[] cookieNameValue = str.Split('=');
                        string cookieName = cookieNameValue[1].Trim().ToString();
                        if (cookieName.Contains(","))
                        {
                            cookieName = "\"" + cookieName + "\"";
                        }
                        Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieName);
                        ck.Domain = webBrowser1.Document.Domain;
                        myCookieContainer.Add(ck);
                    }



c# Cookies中不能包含逗号的解决方案

标签:winform   c#   cookie   cookies   

原文地址:http://blog.csdn.net/mrtraum/article/details/42869251

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!