我試圖使用apache httpclietn-4.2.2獲得'Set Cookie'標頭並出現一些問題。獲取「Set-Cookie」標頭
頁眉在Firebug:
Set-Cookie remixreg_sid=deleted; expires=Thu, 10-Nov-2011 04:32:30 GMT; path=/;
domain=.vk.com remixapi_sid=deleted; expires=Thu, 10-Nov-2011 04:32:30 GMT; path=/;
domain=.vk.com remixrec_sid=deleted; expires=Thu, 10-Nov-2011 04:32:30 GMT; path=/;
domain=.vk.com remixsid=0000000000000000000000000000000000000000000000000000; expires=Mon, 04-Nov-2013 16:10:24 GMT; path=/; domain=.vk.com
如何我想獲得它:
//location is a header with url I need to do GET request to
Header location = response.getFirstHeader("Location");
HttpGet httpGet = new HttpGet(location.getValue());
httpClient.getParams().setParameter(
//tried to use different policies
ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2965);
Header [] allHeaders=response.getAllHeaders();
在allHeaders我都頭,除了 「設置cookie的」。 我有警告這樣的:
WARNING: Invalid cookie header: "Set-Cookie: remixlang=0; expires=Mon, 18-Nov-2013
03:21:47 GMT; path=/; domain=.vk.com". Unrecognized cookie header 'Set-Cookie:
remixlang=0; expires=Mon, 18-Nov-2013 03:21:47 GMT; path=/; domain=.vk.com'
Nov 09, 2012 4:31:41 AM org.apache.http.client.protocol.ResponseProcessCookies
processCookies
所以我覺得這個問題是「過期」的日期。
我試圖這樣做:
1)Invalid cookie header : Unable to parse expires attribute when expires attribute is empty 創建的自定義CookieSpec,並試圖使用它:
httpClient.getCookieSpecs().register("vkCookie", new CookieSpecFactory() {
public CookieSpec newInstance(HttpParams params){
return new VkCookieSpec();
}
});
HttpClientParams.setCookiePolicy(httpClient.getParams(), "vkCookie");
2)試圖設置數據格式的HttpClient PARAMS:
httpClient.getParams().setParameter(CookieSpecPNames.DATE_PATTERNS, Arrays.asList("EEE, dd-MMM-yyyy HH:mm:ss z"));
但我仍然得到這個警告。將不勝感激任何幫助。
感謝您的回覆。我試圖使用所有可用的策略。當我使用最佳匹配,browser_compatibility或netscape_draft時,響應中沒有Set-Cookie標題,並且沒有警告出現。 – pomkine
@pomkine如果響應中沒有Set-Cookie標頭,您如何期望HttpClient能夠解析它? – oleg
哦,對不起。我的意思是沒有由response.getAllHeaders()返回的Set-Cookie頭文件。 – pomkine