Как отправить запрос PUT без содержимого и заголовка длины содержимого с помощью http-клиента Apache?

#java #apache-httpclient-4.x #content-length

#Ява #apache-httpclient-4.x #содержание-длина

Вопрос:

Я хотел бы проверить (с помощью автоматического тестирования), как сервер (и все промежуточные прокси) реагирует на запрос PUT без тела и Content-Length заголовка.

Похоже на то, что делает curl

 curl -XPUT http://example.com  

с помощью HTTP-клиента Apache (4.5.13)

Но похоже, что он всегда добавляет Content-Length заголовок, если я не указываю тело. Есть ли какой-либо способ сделать это с помощью HTTP-клиента Apache?

Уже пробовал (не повезло)

 final HttpPut request = new HttpPut(url); request.removeHeaders("Content-Length");  

Ответ №1:

Используйте перехватчик запросов для изменения запросов, генерируемых процессором стандартного протокола

 CloseableHttpClient httpClient = HttpClients.custom()  .addInterceptorLast((HttpRequestInterceptor) (request, context) -gt;  request.removeHeaders(HttpHeaders.CONTENT_LENGTH))  .build(); HttpPut httpPut = new HttpPut("http://httpbin.org/put"); httpClient.execute(httpPut, response -gt; {  EntityUtils.consume(response.getEntity());  return null; });