2015-04-23 4 views
1

Я только начал использовать Google HTTP Client Library for Java, и мне это очень нравится. Тем не менее, я не знаю, есть ли простой способ обработать случай, когда сервер отправляет заголовок Set-Cookie. Я просмотрел документацию, образец кода и Javadoc и ничего не увидел, поэтому я начал реализовывать свое собственное решение. Однако этот процесс кажется достаточно распространенным, и я думаю, что Google выполнит решение для всех.Set-Cookie с клиентской библиотекой Google HTTP для 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

Чтобы разобрать печенье использовать

java.net.HttpCookie.parse(String header) 

Еще нужно хранить разобранные печенья и отправить их с заголовком Cookie. Есть много решений для обработки файлов cookie через Интернет, хотя странно, что Google не предоставляет его своей библиотекой.

+0

Отлично! Я не знал о net.java.HttpCookie. Теперь, после использования этого статического метода для его синтаксического анализа, мне все равно нужно перевести его в javax.servlet.http.Cookie, но это довольно просто, используя getter и seters. Одним из осложнений была несовместимость между maxAge HttpCookies и maxAge int. – dhalsim2

+0

Когда вы проходите в заголовке, откуда это происходит? Вам все еще нужно выполнять перетаскивание строк или есть какой-то простой способ получить значение set-cookie из googles httpclient без его вывода массива? –