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: -
setRequestProperty>> задает общее свойство запроса. Если свойство с ключом уже существует,перезаписать его значение с новым значением.
addRequestProperty >> добавляет общее свойство запроса, заданное парой ключ-значение. Этот метод будет не перезаписать существующие значения, связанные с одним и тем же ключом.
для получения дополнительной информации просматривать элемент api doc