1
我剛開始使用Google HTTP Client Library for Java,我非常喜歡它。但是,我不知道當服務器發送頭部Set-Cookie時是否有一種簡單的方法來處理這種情況。我查看了文檔,示例代碼和Javadoc,但什麼都沒看到,所以我開始實施我自己的解決方案。但是,這個過程似乎很普遍,我認爲Google會爲每個人實施一個解決方案。Set-Cookie和Google HTTP Client Client Library for Java
服務器發送類似:
Set-Cookie: uid=ef308bd9-4580-4ef0-8cdd-2b09f383419e; Expires=Tue, 31 Dec 2199 23:59:59 GMT; Domain=mydomain.com; Path=/
我的客戶必須手動解析一切:
String[] parts = cookie.split(";");
if (parts.length > 0) {
Pattern p = Pattern.compile("([^\\s=]*)=(.*)");
Matcher m = p.matcher(parts[0]);
if (m.matches()) {
Cookie cookie = new Cookie(m.group(1), m.group(2));
if (parts.length > 1) {
for (int i = 1; i < parts.length; i++) {
// parse and set "Expires", "Max-Age", "Domain", "Path",
// "Secure", "HttpOnly", etc.
}
}
}
}
是否有任何庫的方法來處理這個東西,而不是我實現它自己?
太棒了!我不知道net.java.HttpCookie。現在,在使用該靜態方法解析它之後,我仍然需要將它翻譯成javax.servlet.http.Cookie,但是使用getter和setter很簡單。其中一個併發症是HttpCookies的maxAge long和Cookie的maxAge int之間的不兼容。 – dhalsim2
當你通過標題時,來自哪裏?你是否還需要進行字符串轉換,或者是否有一些簡單的方法可以在不輸出數組的情況下從googles httpclient獲取set-cookie的值? –