Java HttpURLConnection: может ли он справиться с дублирующимися именами заголовков? - PullRequest
0 голосов
/ 01 октября 2008

Я отлаживаю некоторый код на прокси-сервере Selenium-rc. Похоже, виновником является объект HttpURLConnection, интерфейс которого для получения заголовков HTTP не справляется с дублирующимися именами заголовков, такими как:

Set-Cookie: foo=foo; Path=/
Set-Cookie: bar=bar; Path=/

Кажется, что путь к заголовкам через HttpURLConnection (используя getHeaderField(int n) и getHeaderFieldKey(int n)) приводит к потере моего второго cookie. Мой вопрос

  1. Правда ли, что HttpURLConnection сам не справляется с этим, а
  2. Если это так, есть ли обходной путь?

Ответы [ 3 ]

1 голос
/ 01 октября 2008

Мой рекомендуемый обходной путь - вообще не использовать HttpUtilConnection, который является грубым и неинтуитивным, а вместо этого использовать commons-httpclient.

http://hc.apache.org/httpclient-3.x/

0 голосов
/ 01 октября 2008

Хорошо, я нашел проблему и ответ на оригинальный вопрос. По сути, используемая мной реализация Cookie (Cookie Lib по умолчанию в Python) использовала \ r \ n для разграничения различных заголовков Set-Cookie (как предполагается, \ n), это запутало HttpUrlConnection и заставило его остановиться при первом появлении этого разделителя Я собираюсь угадать, это останавливается на первой пустой строке). Итак, ответ на первый вопрос: да, он может справиться с дублирующимися именами заголовков, но глючит по-другому. В настоящее время исправление библиотеки Python является приемлемым решением, но оно не будет работать в долгосрочной перспективе, потому что у нас нет этой библиотеки. Я уверен, что использование библиотеки httpclient - разумный путь, но я надеюсь на решение, которое требует меньше работы. Так что я пока точно не знаю, что там делать.

0 голосов
/ 01 октября 2008

На самом деле, даже не попробовав (не помню, чтобы сам обрабатывал эту тему), есть также getHeaderFields, унаследованный от UrlConnection . Делает ли это то, что вам нужно?

...