В запросе apache cxf MultiPart отсутствует заголовок Content-Length - PullRequest
0 голосов
/ 08 октября 2018

У меня есть код ниже для отправки запроса multipart / form-data.

List<Attachment> multipartData = new ArrayList<>();
ContentDisposition cd1 = new ContentDisposition("form-data; name=\"file\"; 
filename="+fileObj.getName());

FileInputStream inputStream = new FileInputStream(fileObj);
multipartData.add(new Attachment("file",inputStream, cd1));

MultipartBody multipart = new MultipartBody(multipartData);

В моем классе RestClient я использую приведенные ниже строки кода для отправки запроса POST с использованием JAX-Клиентский объект RS

if ("POST".equals(method)) {
            response = this.client.getBuilder().post(Entity.entity(entity,MediaType.MULTIPART_FORM_DATA));

Я проверил тело HTTP-запроса с помощью Wiremock, как показано ниже:

Transfer-Encoding: [chunked]
Accept: [*/*]
Cache-Control: [no-cache]
User-Agent: [Apache-CXF/3.2.5]
Connection: [keep-alive]
Host: [127.0.0.1:9990]
Pragma: [no-cache]
Content-Type: [multipart/form-data; boundary="uuid:04b491f5-50de-4f4f-b7c0-cd745136d3d1"]

--uuid:04b491f5-50de-4f4f-b7c0-cd745136d3d1
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <file>
Content-Disposition: form-data; name="file"; filename=sample.txt

<File content goes here>

Я хочу знать, как отсутствует заголовок длины содержимого в полезной нагрузке запроса,Есть ли способ установить заголовок content-length для запроса?

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 10 октября 2018

Я использовал веб-клиент apache cxf, чтобы сбросить кодировку передачи как chunked.

if ("POST".equals(method)) {
    Invocation.Builder builder = this.client.getBuilder();
    WebClient.getConfig(builder).getHttpConduit().getClient().setAllowChunking(false);
    response = builder.post(Entity.entity(entity,MediaType.MULTIPART_FORM_DATA));
}

При этом клиент может отправлять запрос с заголовком длины содержимого.

...