URLConnection setRequestProperty vs addRequestProperty
Предположим, что я говорю HTTP с веб-сервером, и я буду принимать html или текст, но предпочитаю html. Другими словами, заголовок должен сказать (я думаю!)
Принять: текст /html, текст/*
Я использую Java, поэтому у меня есть URLConnection. Должен ли я использовать:
myUrlConnction.setRequestProperty("Accept", "text/html");
myUrlConnction.addRequestProperty("Accept", "text/*");
или
myUrlConnction.setRequestProperty("Accept", "text/html, text/*");
или они эквивалентны
В целом, большинство сторонних кодов, которые я вижу, похоже, не беспокоиться о упорядочении или нескольких значениях этих заголовков, поэтому мне интересно, как это работает.
Ответы
Ответ 1
Первый фрагмент кода приведет к двум принимающим заголовкам, тогда как второй фрагмент кода даст один заголовок accept с двумя селекторами.
Они фактически эквивалентны.
В спецификации также указано, что более конкретный диапазон носителей имеет приоритет, так что оба будут давать ожидаемое поведение.
Если вы должны указать несколько диапазонов носителей, и они одинаково специфичны, вы можете добавить q-параметр.
Источник: http 1.1 spec (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html):
Ответ 2
Основное отличие между setRequestProperty и addRequestProperty заключается в следующем: -
-
setRequestProperty → Устанавливает свойство общего запроса. Если свойство с ключом уже существует, переписать его значение с новым значением.
-
addRequestProperty → Добавляет свойство общего запроса, заданное парой ключ-значение. Этот метод будет не перезаписывать существующие значения, связанные с одним и тем же ключом.
Для получения дополнительной информации просмотрите api doc