Клиент JAX-RS, ProtocolException: заголовок Content-Length уже присутствует

У меня есть следующий метод:

private static final String UTF_8 = "UTF-8";
private static final int TIMEOUT = 5000;
private static final String DATASTREAM_URI = "MY_VALID_URL_HERE";

@Override
public Response logHttpMessage(final String logHttpMessageXml) throws UnsupportedEncodingException {

    final Client client = new ResteasyClientBuilder()
            .establishConnectionTimeout(TIMEOUT, TimeUnit.MILLISECONDS)
            .socketTimeout(TIMEOUT, TimeUnit.MILLISECONDS)
            .build();

    final WebTarget target = client.target(DATASTREAM_URI);
    return target.request().header(HttpHeaders.CONTENT_LENGTH, logHttpMessageXml.getBytes(UTF_8).length)
            .post(Entity.entity(logHttpMessageXml, MediaType.APPLICATION_XML_TYPE));
}

Я добавляю заголовок следующим образом: .header(HttpHeaders.CONTENT_LENGTH, logHttpMessageXml.getBytes(UTF_8).length)

Но я получаю эту ошибку при выполнении запроса:

введите здесь описание изображения

ПРИМЕЧАНИЕ. Мне нужно установить длину содержимого, чтобы запретить фрагментацию, моя конечная точка покоя (вне моего контроля) НЕ реагирует правильно на фрагментированные данные.

Я искал в Интернете, но не нашел решения, как я могу это решить? Заранее спасибо!


person Jdruwe    schedule 08.06.2015    source источник
comment
Возможно, заголовок уже устанавливается под капотом. Делали ли вы какие-либо журналы (или использовали какой-либо инструмент, например fiddler), чтобы увидеть полный запрос с полными заголовками?   -  person Paul Samsotha    schedule 08.06.2015
comment
Когда я делаю следующее: final MultivaluedMap‹String, Object› headers = target.request().post(Entity.entity(logHttpMessageXml, MediaType.APPLICATION_XML_TYPE)).getHeaders(); он говорит, что значение длины содержимого равно 0. Почему это происходит?   -  person Jdruwe    schedule 09.06.2015
comment
Это ответ, а не заголовки запроса. Заголовки Content-Length или Transfer-Encoding устанавливаются не самим RESTeasy, а базовым Apache HttpClient, и я не думаю, что есть простой способ изменить это. См. также здесь, здесь и здесь   -  person lefloh    schedule 09.06.2015