Я должен проверить Content-Type
значение заголовка, прежде чем передать его в запрос HTTP.
Есть ли конкретный список для всех возможных значений Content-Type
?
Иначе, есть ли способ проверить тип контента перед использованием его в HTTP-запросе?
Я должен проверить Content-Type
значение заголовка, прежде чем передать его в запрос HTTP.
Есть ли конкретный список для всех возможных значений Content-Type
?
Иначе, есть ли способ проверить тип контента перед использованием его в HTTP-запросе?
Ответы:
Вы можете найти каждый тип контента здесь: http://www.iana.org/assignments/media-types/media-types.xhtml
Наиболее распространенный тип:
Тип приложения
application/java-archive
application/EDI-X12
application/EDIFACT
application/javascript
application/octet-stream
application/ogg
application/pdf
application/xhtml+xml
application/x-shockwave-flash
application/json
application/ld+json
application/xml
application/zip
application/x-www-form-urlencoded
Введите аудио
audio/mpeg
audio/x-ms-wma
audio/vnd.rn-realaudio
audio/x-wav
Введите изображение
image/gif
image/jpeg
image/png
image/tiff
image/vnd.microsoft.icon
image/x-icon
image/vnd.djvu
image/svg+xml
Тип multipart
multipart/mixed
multipart/alternative
multipart/related (using by MHTML (HTML mail).)
multipart/form-data
Введите текст
text/css
text/csv
text/html
text/javascript (obsolete)
text/plain
text/xml
Введите видео
video/mpeg
video/mp4
video/quicktime
video/x-ms-wmv
video/x-msvideo
video/x-flv
video/webm
Тип VND:
application/vnd.android.package-archive
application/vnd.oasis.opendocument.text
application/vnd.oasis.opendocument.spreadsheet
application/vnd.oasis.opendocument.presentation
application/vnd.oasis.opendocument.graphics
application/vnd.ms-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.ms-powerpoint
application/vnd.openxmlformats-officedocument.presentationml.presentation
application/msword
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.mozilla.xul+xml
Как определено в RFC 1341 :
В расширенной нотации BNF RFC 822 значение поля заголовка Content-Type определяется следующим образом:
Content-Type: = type "/" subtype * [";" параметр]
type: = "application" / "audio" / "image" / "message" / "multipart" / "text" / "video" / x-token
x-token: = <За двумя символами «X-», без промежуточных пробелов, следует ни один токен>
подтип: = токен
параметр: = атрибут "=" значение
атрибут: = токен
значение: = токен / строка в кавычках
токен: = 1 *
tspecials: = "(" / ")" / "<" / ">" / "@"; Должен быть в / "," / ";" / ":" / "\" / <">; строка в кавычках, /" / "/" ["/"] "/"? "/". "; использовать в /" = "; значения параметров
И список известных типов MIME, которые могут следовать за ним (или, как замечает Джо, источник IANA ).
Как видите, список слишком велик для вас, чтобы его можно было проверить по всем. Что вы можете сделать, это проверить на соответствие общему формату и type
атрибуту, чтобы убедиться, что это правильно (набор опций невелик), и просто предположить, что то, что следует, является правильным (и, конечно, перехватить любые исключения, с которыми вы можете столкнуться, когда вы положите его для фактического использования).
Также обратите внимание на комментарий выше:
Если по какой-либо причине должен использоваться другой первичный тип, ему нужно дать имя, начинающееся с «X-», чтобы указать его нестандартный статус и избежать возможного конфликта с будущим официальным именем.
Вы заметите, что во многих HTTP-запросах / ответах есть какой-то X-
заголовок, который определяется самостоятельно, помните об этом при проверке типов.
Я хотел бы охватить подмножество возможных значений типа контента, ваш вопрос, кажется, сосредоточен на выявлении известных типов контента.
@Jeroen RFC 1341 ссылки велика, но для довольно исчерпывающего списка IANA сохраняет веб - страницу официально зарегистрированные типов носителей здесь .
Если вы используете jaxrs или любой другой, то перед отправкой запроса будет класс перехватчик mediatype.User, который будет сравниваться с этим.