0

Вот мой код:Как конвертировать cookies Apache обратно в String?

List<Cookie> cookies = httpClient.getCookieStore().getCookies(); 

Очевидно, что я могу цикл в cookies список и генерировать их строковое представление.

Однако, интересно, может ли это быть сделано с API Apache HttpClient напрямую.

Так что если cookies содержат следующие куки: [foo=123, bar=123], как я могу генерировать строку ниже с HttpClient API:

"foo=123; bar=123" 

Метод должен заботиться о домене, пути, истечения т.д.,

HttpClient 4.1.1

+0

Есть ли у нее быть такой старой версии HC? – oleg

+0

@oleg Для моего текущего варианта использования я не могу перейти на HC 4.3+. – Stephan

ответ

1

HttpClient 4,1

BasicClientCookie cookie1 = new BasicClientCookie("foo", "123"); 
cookie1.setVersion(0); 
cookie1.setDomain("origin.com"); 
cookie1.setPath("/"); 
BasicClientCookie cookie2 = new BasicClientCookie("bar", "123"); 
cookie1.setVersion(0); 
cookie1.setDomain("origin.com"); 
cookie1.setPath("/"); 

BasicCookieStore cookieStore = new BasicCookieStore(); 
cookieStore.addCookie(cookie1); 
cookieStore.addCookie(cookie2); 

NetscapeDraftSpec spec = new NetscapeDraftSpec(); 
List<Header> headers = spec.formatCookies(cookieStore.getCookies()); 
for (Header header: headers) { 
    System.out.println(header); 
} 

HttpClient 4,5

BasicClientCookie cookie1 = new BasicClientCookie("foo", "123"); 
cookie1.setVersion(0); 
cookie1.setDomain("origin.com"); 
cookie1.setPath("/"); 
BasicClientCookie cookie2 = new BasicClientCookie("bar", "123"); 
cookie1.setVersion(0); 
cookie1.setDomain("origin.com"); 
cookie1.setPath("/"); 

BasicCookieStore cookieStore = new BasicCookieStore(); 
cookieStore.addCookie(cookie2); 
cookieStore.addCookie(cookie1); 

RFC6265StrictSpec spec = new RFC6265StrictSpec(); 
List<Header> headers = spec.formatCookies(cookieStore.getCookies()); 
for (Header header: headers) { 
    System.out.println(header); 
} 
+0

Просто для моего любопытства, можете ли вы добавить код для HC 4.3+? – Stephan

+0

Это не будет сильно отличаться. Однако с HC 4.5 я бы рекомендовал использовать спецификацию cookie, совместимую с RFC 6265, вместо прежних – oleg

Смежные вопросы