Я только начал использовать 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.
}
}
}
}
Есть ли способ библиотеки обрабатывать этот материал вместо меня, реализующего это сам?
Отлично! Я не знал о net.java.HttpCookie. Теперь, после использования этого статического метода для его синтаксического анализа, мне все равно нужно перевести его в javax.servlet.http.Cookie, но это довольно просто, используя getter и seters. Одним из осложнений была несовместимость между maxAge HttpCookies и maxAge int. – dhalsim2
Когда вы проходите в заголовке, откуда это происходит? Вам все еще нужно выполнять перетаскивание строк или есть какой-то простой способ получить значение set-cookie из googles httpclient без его вывода массива? –