0

У нас есть неплохой API (который мы не можем изменить), если значение Content-Type для части равно NULL, мы имеем конкретную обработку.В apache http-клиенте, как сохранить Content-Type в StringBody как пустой или пустой?

До httpclient3.x мы могли бы сделать следующее и установить тип содержимого как null.

StringPart sp = new StringPart("name, "value") 
sp.setContentType(null); 

Теперь мы перешли к HTTP компонентов (httpclient4.x баночке), и я понял, что нам нужно передать экземпляр ContentBody (StringBody быть точным). В следующей версии были найдены следующие два способа:

multipartEntityBuilder.addPart(FormBodyPartBuilder.create().setName(propName).setBody(new StringBody(propValue, ContentType.create("application/octet-stream", "UTF-8"))).build()); 
multipartEntityBuilder.addPart(propName, new StringBody(propValue, ContentType.create("application/octet-stream", "UTF-8"))); 

Однако я не мог передать тело без Content-Type. Даже если я использую устаревший конструктор для StringBody, он устанавливает Content-Type в обычный текст.

Я знаю, что любая часть запроса всегда должна иметь Content-Type, но это особый случай устаревшего сервера назначения, который мы не можем обновить.

+0

[Вы можете прочитать эту тему.] (Http://stackoverflow.com/questions/22326994/is-there-a-standard-null-mime -тип) – Sid

ответ

1

Я думаю, единственный вариант заключается в использовании устаревшей FormBodyPart#FormBodyPart(String name, ContentBody)конструктору И переопределить DEPRECATED FormBodyPart#generateContentType метода.

FormBodyPart bodyPart = new FormBodyPart("stuff", new StringBody("stuff", ContentType.DEFAULT_TEXT)) { 

    @Override 
    protected void generateContentType(ContentBody body) { 
    } 

}; 
HttpEntity entity = MultipartEntityBuilder.create().addPart(bodyPart).build(); 
entity.writeTo(System.out); 

станд из>

--yJHqjnFj0u-dWGPGkGtK_NnOgUeOspQ 
Content-Disposition: form-data; name="stuff" 
Content-Transfer-Encoding: 8bit 

stuff 
--yJHqjnFj0u-dWGPGkGtK_NnOgUeOspQ-- 
+0

Это было потрясающе. Именно то, что мне нужно. Благодаря !!! – Crusaderpyro