Я использую Retrofit (1.7.1), который использует клиент OkHttp (2.1.0) по умолчанию для проверки подлинности на сервере и получения некоторых файлов cookie сеансов для ответа друг на друга.Как установить формат файла cookie в OkHttp?
У меня есть CookieManager и перехватчик, который устанавливает заголовок «Cookie».
Перехватчик строит печенье как
cookieName + "=" + cookieValue + "; "
(я на самом деле использовать StringWriter но результаты его же)
Правильные заголовки результат должен быть:
Cookie: PHPSESSID=<my_php_sess_id>; session=<my_session_id>;
НО
Реализация по умолчанию (OkHttp, я думаю) добавляет еще один файл cookie h eader в результате:
Cookie: PHPSESSID=<my_php_sess_id>; session=<my_session_id>;
Cookie: $Version="1"; PHPSESSID="<my_php_sess_id>";$Path="/";$Domain="<my_domain>"; session="<my_session_id>";$Path="/";$Domain="<my_domain>"
я мог найти второй заголовок только инспектирующую сетевые пакеты с WireShark, все журналы библиотеки показывает только первый.
Я думаю, что этот второй заголовок вызывает некоторые проблемы: обратите внимание на цитаты вокруг значения cookie.
Есть ли способ сказать OkHttp или «Дооснащение», чтобы использовать «обычную» версию cookie?
Может быть, я неправильно понял все все Cookie/Client/механизм перехватчик, но установка клиента Дооснащаемый на:
.setClient(new ApacheClient(new DefaultHttpClient()))
решить эту проблему.
Спасибо заранее
Вы нашли решение с помощью OkHttp вместо DefaultHttpClient? –
Я обновил вопрос, включая модификации и версии OkHttp, которые я использовал в декабре 2014 года. С того времени я еще не пробовал. У вас такая же проблема с более новыми версиями? – Gnafu
Я нашел обходное решение, заставив версию cookie до 0. Я напишу ответ. –