Java http cookie - PullRequest
       1

Java http cookie

1 голос
/ 08 февраля 2011

Как я могу получить содержимое cookie-файлов с URL-адреса в java?

Например: при использовании LiveHttpHeaders при посещении google.com я вижу, что cookie возвращается следующим образом.* SID = DQAAAKEAAADA1VJiGC-O-Ml8cPfRIA8NxJ3rCQfXbRnh5NMw-l8eunfAKJNypj9Rss1_Ok2yyQXCU9qu4jM2TuASy2EE0KUknUOsdOgMz3W7WCDgey6OSZ-xi_ozh_lZP8paJ_OViG_G2FaTWciTyd4Mp_V0LYjgov1u6KkhATu8day8-nEckMXb4I56cse8SaiYFCjDmpUDmL6CDFij8Nxd3XDUEOTn5SCifKrRDohW6mAAaqzFPA; HSID=AvoV_TPUEmoSB6KMm; PREF=ID=260f8c0212fee1a7:U=6ca9509bc747fb21:TM=1297164689:LM=1297164690:S=opeCe3s85Xhm3Bq1; NID=43=EZNhkfgLmXVNQriZ2rjU0HGj6flDYy2nfsPD4Ef6pME0wvXxc5_avP1R9fSea0py_-F9xY3SJ6DpMvLXRT_bU7FH97s8sOmx7l49cwvNUbYTwJcY0xqs-0vKqybTeNZY

Как получить значение SID?Эти вещи недоступны в getHeaderFieldKey() класса UrlConnection.Я пытался получить cookieHandler по умолчанию, но система возвращает ноль.

Ответы [ 3 ]

3 голосов
/ 08 февраля 2011

Сначала вам нужно установить обработчик cookie , прежде чем вы подключитесь к URL (например, CookieHandler.setDefault(new CookieManager())).тогда куки будут собраны автоматически, и вы можете извлечь их из CookieHandler, если это необходимо.

2 голосов
/ 08 февраля 2011
URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp");
URLConnection urlConn = myUrl.openConnection();
urlConn.connect();

Поскольку сервер может установить несколько файлов cookie в одном запросе, нам нужно будет циклически просмотреть заголовки ответа, ища все заголовки с именем «Set-Cookie».

String headerName=null;
for (int i=1; (headerName = uc.getHeaderFieldKey(i))!=null; i++) {
    if (headerName.equals("Set-Cookie")) {                  
    String cookie = urlConn.getHeaderField(i);               
    ...         

Извлечение имени и значения cookie из строки cookie :

Строка, возвращаемая методом getHeaderField(int index), представляет собой последовательность name=value, разделенных semi-colons (;).Первое сопряжение имя / значение представляет собой фактическую строку данных, которая вас интересует (например, "sessionId=0949eeee22222rtg" or "userId=igbrown"), последующие сопряжения имя / значение представляют собой метаинформацию, которую можно использовать для управления хранением файла cookie (когда он истекает и т. Д.).

 cookie = cookie.substring(0, cookie.indexOf(";"));
    String cookieName = cookie.substring(0, cookie.indexOf("="));
    String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());
0 голосов
/ 08 февраля 2011

Используйте request.getCookies(), где запрос имеет тип HttpServletRequest. Запрос передается методу doGet и / или doPost, который предполагается реализовать в теле сервлета или JSP, если вы используете JSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...