Tôi đang cố gắng lấy tiêu đề 'Đặt Cookie' bằng apache httpclietn-4.2.2 và gặp một số vấn đề.Tiêu đề "Đặt cookie"
Header trong 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
Làm thế nào tôi đang cố gắng để có được nó:
//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();
Trong allHeaders tôi có tất cả các tiêu trừ "Đặt Cookie". Và tôi có các cảnh báo như sau:
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
Vì vậy, tôi nghĩ vấn đề là ngày 'hết hạn'.
Những gì tôi đã cố gắng để làm:
1) Invalid cookie header : Unable to parse expires attribute when expires attribute is empty Tạo tùy chỉnh CookieSpec và cố gắng sử dụng nó:
httpClient.getCookieSpecs().register("vkCookie", new CookieSpecFactory() {
public CookieSpec newInstance(HttpParams params){
return new VkCookieSpec();
}
});
HttpClientParams.setCookiePolicy(httpClient.getParams(), "vkCookie");
2) Cố gắng để thiết lập định dạng dữ liệu trong HttpClient params:
httpClient.getParams().setParameter(CookieSpecPNames.DATE_PATTERNS, Arrays.asList("EEE, dd-MMM-yyyy HH:mm:ss z"));
Nhưng tôi vẫn nhận được cảnh báo đó. Sẽ đánh giá cao sự giúp đỡ nào.
Cảm ơn bạn đã trả lời. Tôi đã cố gắng sử dụng tất cả các chính sách có sẵn. Khi tôi sử dụng kết hợp tốt nhất, browser_compatibility hoặc netscape_draft, không có tiêu đề Set-Cookie trong phản hồi và không có cảnh báo nào xuất hiện. – pomkine
@pomkine nếu không có tiêu đề Set-Cookie trong phản hồi, làm thế nào để bạn mong đợi HttpClient để có thể phân tích nó? – oleg
ohhh, xin lỗi. Tôi có nghĩa là không có tiêu đề Set-Cookie trả về bởi response.getAllHeaders(). – pomkine