Как узнать тип медиа ответа, используя InputStreamResponseListener с Jetty - PullRequest
0 голосов
/ 23 октября 2019

Я хотел бы получить HTTP-ответ через поток, используя Jetty (org.eclipse.jetty.client.util.InputStreamResponseListener). Однако я не уверен, как определить тип содержимого (т. Е. Тип мультимедиа) ответа в случае потокового ответа?

Использование org.eclipse.jetty.client.api.Request.send() все понятно, потому что я могу получить тип содержимого, используя org.eclipse.jetty.client.api.ContentResponse.getMediaType(). Однако в случае потокового ответа такого метода не существует.

Я думал об использовании метода org.eclipse.jetty.client.api.Response.getHeaders(). Но я не уверен, что он вернется. В документации Jetty не сказано, обрабатывает ли этот слушатель один HTTP-ответ и / или фрагментарный ответ. В случае фрагментированного ответа существует несколько HTTP-ответов с потенциально разными (или отсутствующими) типами содержимого.

Какой HTTP-ответ точно возвращается org.eclipse.jetty.client.util.InputStreamResponseListener.get​(long timeout, java.util.concurrent.TimeUnit unit)? Первый?

Если он более или менее такой же, как и для ContentResponse, почему он не предоставляет связанные методы для типа контента?

Я бы хотел избежать проблем с отсутствующим или неопределенным содержимымтипы на стороне клиента для потокового контента.

1 Ответ

0 голосов
/ 25 октября 2019

Использование InputStream через InputStreamResponseListener для чтения содержимого тела ответа HTTP - это все, что вам нужно.

На InputStream не влияют значения заголовка ответа Content-Type, дажетип мультимедиа или кодировка.

Это потому, что InputStream - это просто необработанные байты, вы можете взять эти необработанные байты и применить соответствующий набор символов (если имеете дело с текстовыми данными вместо двоичных), декодировать, выгружать, анализировать, чтобы соответствоватьпотребности вашего приложения, используя подсказки, предоставленные заголовком ответа Content-Type (mime-type и необязательный набор символов).

...