gpt4 book ai didi

java - 无效的 cookie header : Unable to parse expires attribute when expires attribute is empty

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:56:48 31 4
gpt4 key购买 nike

在 android 应用程序中,当使用 DefaultHttpClient 获取 URL 内容(执行 HttpGet)时,我在日志中收到以下警告:

W/ResponseProcessCookies(20386): Invalid cookie header: "Set-Cookie: NSC_vbue_iuuq=ffff660; expires=; domain=private.false.name; path=/; isSecure=false". Unable to parse expires attribute:

我理解警告,因为 expires 字段不包含有效的日期格式。我理解它可能是因为它是一个“ session cookie”(不是专家)。 Thread about similar situation in Curl context

我在网上搜索主要是

.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH (or other) )

通过正确解析包含逗号的日期来避免警告的选项。

但是,我想避免那个日志。 (不是通过禁用日志)我相信内部一切都很好,因为“我猜”,cookie.setExpiryDate() 根本没有被调用。

您认为我需要对我的 HTTP 客户端进行特定配置(我没有设置特定配置)来避免该警告或支持空过期吗?

谢谢。

最佳答案

如果您不介意更改 CookieSpec,您可以提供自己的、更宽松的子类。

首先,创建一个宽松的 CookieSpec,它将接受 nullexpires 属性的空值,如下所示:

class LenientCookieSpec extends BrowserCompatSpec {
public LenientCookieSpec() {
super();
registerAttribHandler(ClientCookie.EXPIRES_ATTR, new BasicExpiresHandler(DATE_PATTERNS) {
@Override public void parse(SetCookie cookie, String value) throws MalformedCookieException {
if (TextUtils.isEmpty(value)) {
// You should set whatever you want in cookie
cookie.setExpiryDate(null);
} else {
super.parse(cookie, value);
}
}
});
}
}

现在您需要在您的 HTTP 客户端中注册并选择这个新的 CookieSpec

DefaultHttpClient client = new DefaultHttpClient();
client.getCookieSpecs().register("lenient", new CookieSpecFactory() {
public CookieSpec newInstance(HttpParams params) {
return new LenientCookieSpec();
}
});
HttpClientParams.setCookiePolicy(client.getParams(), "lenient");

“像这样”的东西可能对你有用。

关于java - 无效的 cookie header : Unable to parse expires attribute when expires attribute is empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500714/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com