2013-12-16 7 views
0

Есть ли простой способ убедиться, что HttpClient не отправляет файлы cookie во время запроса без удаления всех файлов cookie.Пропустить отправку файлов cookie в запрос, но сохранить файлы cookie

Поступая:

httpClient.getCookieStore().clear(); 

печенье не отправляются, и это хорошо. Но для других запросов (где мне нужны эти куки-файлы), я не хочу снова получать новые куки.

+0

Я не знаю андроида, но у вас есть доступ к опции localStorage? Или внутренний db для «резервного копирования» файла cookie. Другое решение может сделать cookie действительным только для определенного пути (и сделать запрос без cookie по другому пути) –

+0

Привет, хорошее предложение, но, к сожалению, не применимо к моей проблеме. А для ручного обновления и обработки файлов cookie в БД это не то, что нужно учитывать. – Henric

+0

Я думаю, что нет других путей. Потому что это концепция печенья. Вы также можете установить другой домен без запросов cookie. Это трюк для статических изображений в очень большой системе (facebook, google и т. Д.) –

ответ

0

Вы можете попытаться установить заголовок Cookie запроса вручную для конкретного запроса

request.setHeader("Cookie",""); 

Отредактировано: Так что, если это то, что не работает в другой подход мог бы попытаться добавить пустое печенье магазин что HttpClient экземпляр, так что теоретически вы будете иметь пустой CookieStore

// Create a local instance of cookie store 
CookieStore cookieStore = new BasicCookieStore(); 
// Add the created cookieStore to the http client instance 
httpClient.setCookieStore(cookieStore); 
+0

Пробовал это без везения. Похоже, что httpClient автоматически добавляет файлы cookie для домена, даже если мы добавляем пустые куки в заголовке. – Henric

0

Мой ответ основан на предположении, что вы используете Apache HttpClient версии 4.x.

По умолчанию HttpClient 4.x представляет два протокола-перехватчика для протокола обработки протокола, отвечающего за управление состоянием HTTP: RequestAddCookies и ResponseProcessCookies. Вы хотите удалить RequestAddCookies, оставив ResponseProcessCookies на месте.

Это, как это может быть сделано с HttpClient 4,3

CloseableHttpClient httpclient = HttpClients.custom() 
     .disableCookieManagement() 
     .addInterceptorFirst(new ResponseProcessCookies()) 
     .build(); 

Есть другие способы достичь того же результата, например, с помощью пользовательского перехватчик протокола, который удаляет заголовки куки из всех исходящих запросов, но удаление RequestAddCookies является наиболее эффективным.

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