2015-04-23 105 views
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. 
      } 
     } 
    } 
} 

是否有任何庫的方法來處理這個東西,而不是我實現它自己?

回答

3

要解析的cookie使用

java.net.HttpCookie.parse(String header) 

仍需要存儲分析Cookie和其他與Cookie頭給他們。雖然Google不提供圖書館,但奇怪的是,有很多解決方案可以通過互聯網處理cookie。

+0

太棒了!我不知道net.java.HttpCookie。現在,在使用該靜態方法解析它之後,我仍然需要將它翻譯成javax.servlet.http.Cookie,但是使用getter和setter很簡單。其中一個併發症是HttpCookies的maxAge long和Cookie的maxAge int之間的不兼容。 – dhalsim2

+0

當你通過標題時,來自哪裏?你是否還需要進行字符串轉換,或者是否有一些簡單的方法可以在不輸出數組的情況下從googles httpclient獲取set-cookie的值? –

相關問題