httpURLConnection по сравнению с апачским свободным городским населением http

Я просто хотел знать, были ли у какого-либо из Вас какие-либо проблемы с помощью значения по умолчанию Java класс HttpURLConnection. Некоторая ошибка, которая заставила Вас переключиться на апачское свободное городское население.

Или это - просто (ужасный) интерфейс, который класс выставляет, который выравнивает по ширине рождение третьей стороны http lib?

Раскрытие: Я слышал некоторые аргументы против java.net, имеющего некоторые серьезные проблемы, но я нахожу трудно, чтобы полагать, что класс, который является частью распределения ядра Java все еще, имеет проблемы после нескольких выпусков JDK

6
задан skaffman 18 May 2012 в 18:13
поделиться

2 ответа

То, что заставляет меня отказаться от Apache HttpClient, это:

  1. Ошибочная поддержка keep-alive.
  2. Обработка куки.

Сейчас вы должны использовать HttpClient 4 (Apache HTTP Components).

EDIT: Первая проблема обсуждалась здесь несколько раз. Смотрите,

HttpURLConnection.getResponseCode() возвращает -1 при втором вызове

HttpURLConnection: Как быть с необходимостью читать весь ответ?

Хотя проблема кажется более серьезной на Android, мы видели точно такие же проблемы на J2SE.

4
ответ дан 16 December 2019 в 21:36
поделиться

... но мне трудно поверить, что у класса, который является частью дистрибутива ядра Java, все еще есть проблемы после нескольких выпусков JDK.

В защиту Sun они застряли между камнем и наковальней:

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

  • Если они не исправят проблему, они получат бесконечную критику от пуристов, которые думают, что каждую проблему нужно исправить, и чертовски совместимость.

По крайней мере, у людей, которым нужен HTTP-клиентский API, есть лучшая альтернатива ... если они захотят его использовать.


Вот почему был изобретен @deprecated.

Теоретически да ...

Однако на практике отказ от поддержки используется Oracle как сильный сигнал для программистов (и, что более важно, менеджеров), что им необходимо изменить свой код.

Здесь нет никаких оснований. Давайте посмотрим на конкретные проблемы:

  • « HttpURLConnection не может обрабатывать файлы cookie» не является причиной для отказа от него. Люди, которые уже создали приложения против HttpURLConnection , уже имели дело с этой проблемой. Для них переход на другой класс HTTP-клиента - ненужная работа.

  • « HttpURLConnection не поддерживает keep-alives» также не является поводом для отказа от поддержки. Большинству приложений не требуются средства проверки активности.

И так далее.

Устаревание - это грубый инструмент, и философия Sun / Oracle заключается в том, что его следует использовать только в тех случаях, когда API трудно использовать безопасно ; то есть когда есть веское экономическое обоснование для разработчиков, тратящих время на переработку кода и т. д.

Но не верьте мне на слово.Посмотрите на случаи, когда Sun / Oracle имеет устаревшие методы и классы. Есть четкая закономерность, даже если есть исторические исключения из нее.

0
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: