Я пытаюсь сделать запрос к Jersey REST service
, который принимает InputStream
как сущность, используя метод PUT
.
Когда я это делаю, клиент из Джерси устанавливает для заголовка Content-Length
значение 0.
Служба REST требует, чтобы Content-Length
был установлен на фактический размер потока (то есть размер файла), но всякий раз, когда я пытаюсь установить Content-Length
, клиент выдает:
org.apache.http.ProtocolException: заголовок Content-Length уже присутствует
Обратите внимание: исключение не выдается, когда я добавляю заголовок Content-Length (в этот момент этот заголовок не существует), оно выдается (я предполагаю), когда Jersey / Apache HTTPClient
пытается добавить значение заголовка 0
позже.
Стек, если это поможет:
Вызвано: org.apache.http.client.ClientProtocolException в org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:909) в org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient. java:827) на org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:326) ... еще 40
Вызвано: org.apache.http.ProtocolException: заголовок Content-Length уже присутствует в org.apache.http.protocol.RequestContent.process(RequestContent.java:96) в org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor .java:109) в org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:176) в org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:518) в org.apache. http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) ... еще 42
Итак, любые идеи, почему Jersey / Apache HTTP Client
устанавливает заголовок Content-Length
в 0 и почему я не могу переопределить заголовок Content-Length
Я использую:
Jersey 2.4.1
с ApacheConnector
заранее спасибо
Буду