Java ApacheHTTP:如何设置自定义ContentType
我正在使用ApacheHTTP客户端将文件上载为Java ApacheHTTP:如何设置自定义ContentType,java,http,mime-types,apache-httpclient-4.x,apache-httpcomponents,Java,Http,Mime Types,Apache Httpclient 4.x,Apache Httpcomponents,我正在使用ApacheHTTP客户端将文件上载为 public void whenSendMultipartRequestUsingHttpClient_thenCorrect() throws ClientProtocolException, IOException { CloseableHttpClient client = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://www
public void whenSendMultipartRequestUsingHttpClient_thenCorrect()
throws ClientProtocolException, IOException {
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://www.example.com");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("ads", "John");
builder.addTextBody("qwe", "pass");
builder.addBinaryBody("file", new File("test.txt"),
ContentType.APPLICATION_OCTET_STREAM, "file.ext");
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
CloseableHttpResponse response = client.execute(httpPost);
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
client.close();
}
问题是服务器端需要文件的ContentType
为application/myCustomTag
但是,这不是ContentType
界面中的值。我有没有办法提供一个自定义字符串作为ContentType
编辑
我试图重新创建浏览器上显示的请求
将我的请求头作为
[X-head1: {someJson}, Accept: application/json, X-head2: someVal, X-head3: otherVal, Content-Type: application/json]
以及有效载荷
[Content-Disposition: form-data; name="file.ext"; filename="test.txt", Content-Type: application/octet-stream, Content-Transfer-Encoding: binary]
我能看到的关键区别是,在有效负载中,我在浏览器中看到以下内容
内容类型:应用程序/myCustomTag
这不是HTTP标准的
内容类型
,因此我无法将其设置为该类型您是否尝试在HttpPost上设置setHeader?
备选方案:
ContentType.create(“应用程序/myCustomTag”)您是否尝试使用ContentType.MULTIPART\u FORM\u数据?关于
httpPost.addHeader(“内容类型”,“应用程序/myCustomTag”)代码>谢谢,我试过了,但我还是从服务器上得到了500我用另一个选项编辑了我的答案。(与addBinaryBody一起使用)