首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

httpclient 4.1.2-GA 出现invalid cookie header 的解决方法

2012-08-09 
httpclient 4.1.2-GA 出现invalid cookie header 的解决办法最近在使用httpcomponent-client-4.1.2时,遇到

httpclient 4.1.2-GA 出现invalid cookie header 的解决办法
最近在使用httpcomponent-client-4.1.2时,遇到如下错误:
client.getParams().setParameter(CookieSpecPNames.DATE_PATTERNS,Arrays.asList("EEE, dd-MMM-yyyy HH:mm:ss z"));
怀疑在别处做了其他处理,单步观察入参与回复中中给出demo的不同,意外发现在org.apache.http.impl.cookie.DateUtils#parseDate(String dateValue,String[] dateFormats,Date)方法入参的第一个String入参包含两个双引号。往下走,看到如下代码:

        if (dateValue.length() > 1                && dateValue.startsWith("'")                && dateValue.endsWith("'"))        {            dateValue = dateValue.substring (1, dateValue.length() - 1);        }

到这应该可以肯定问题的所在了,httpclient只处理单引号,并未对双引号做处理。对代码作如下更改
        if (dateValue.length() > 1            && ((dateValue.startsWith("'")            && dateValue.endsWith("'"))            || (dateValue.startsWith(""")            && dateValue.endsWith(""")))        )        {            dateValue = dateValue.substring (1, dateValue.length() - 1);        }

重新打包,问题解决。
后记:出现这个问题是由一些web server在生成setcookie响应头时没按照规范来做造成的。
httpclient4.2.0在遇到这样的setcookie头应该也有这个问题。
4.2.0-dev版本中的代码依旧没做修改

热点排行