WireMock - недопустимая длина содержимого после изменения тела с помощью ResponseTransformer

Я пытаюсь изменить ответ с помощью wiremock в режиме записи. Я расширяю ResponseTransformer и заменяю абсолютную ссылку URL. Wiremock возвращает измененный ответ, но не обновляет заголовок Content-Length, поэтому хром считает, что осталось загрузить еще несколько байтов. Когда я пытаюсь добавить заголовок Content-Length:

... Response.Builder.like(response).headers(updateContentLength(response.getHeaders(), modifiedBody.length()));
...

private HttpHeaders updateContentLength(HttpHeaders headers, int bodyLength) {
    HttpHeaders newHttpHeaders = HttpHeaders.noHeaders();

    for (HttpHeader header : headers.all()) {

        if(header.key().equalsIgnoreCase("Content-Length"))
        {
            newHttpHeaders.plus(new HttpHeader(header.key(), bodyLength +""));
        }
        else
        {
            newHttpHeaders.plus(header);
        }
    }
    return  newHttpHeaders;
}

Некоторые заголовки, такие как Set-Cookie, исчезают, а «Transfer-Encoding: chunked» добавляется дополнительно.

используя: wiremock-standalone-2.14.0.jar


person Piotr Boho    schedule 19.03.2018    source источник
comment
Я создал задачу для этого github.com/tomakehurst/wiremock/issues/907.   -  person Piotr Boho    schedule 21.03.2018


Ответы (1)


1) Об ошибке сообщается здесь github.com/tomakehurst/wiremock/issues/907.

2) Мой обходной путь - не изменять фактическую длину контента, добавляя белые символы в то место, где клиент их игнорирует, например.

<script src="https://example123456.com/aaa"></script>

заменить на:

<script src=      "https://example.com/aaa"></script>
person Piotr Boho    schedule 23.03.2018