URLConnection setRequestProperty против addRequestProperty

допустим, я говорю HTTP с веб-сервером, и я буду принимать html или текст, но предпочитаю html. Другими словами, заголовок должен сказать (я думаю!)

принять: text / html, text/*

Я использую Java, поэтому у меня есть URLConnection. Должен ли я использовать:

myUrlConnction.setRequestProperty("Accept", "text/html");
myUrlConnction.addRequestProperty("Accept", "text/*");

или

myUrlConnction.setRequestProperty("Accept", "text/html, text/*");

или они эквивалентны???

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

2 ответов


первый фрагмент кода приведет к двум заголовкам accept, а второй фрагмент кода даст один заголовок accept с двумя селекторами.

Они фактически эквивалентны.

в спецификации также указано, что более конкретный диапазон носителей имеет приоритет, поэтому оба будут давать ожидаемое поведение.

Если необходимо указать несколько диапазонов носителей, и они одинаково специфичны, можно добавить q-параметр.

Источник: http 1.1 spec ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html ) :


основное различие между setRequestProperty и addRequestProperty: -

  1. setRequestProperty>> задает общее свойство запроса. Если свойство с ключом уже существует,перезаписать его значение с новым значением.

  2. addRequestProperty >> добавляет общее свойство запроса, заданное парой ключ-значение. Этот метод будет не перезаписать существующие значения, связанные с одним и тем же ключом.

для получения дополнительной информации просматривать элемент api doc