0

当使用 apache.HttpClient 发送多部分时,我生成如下输出:

18:29:58.800 调试 nnnweServiceImpl -

--bEDi1DhmFcmCTebUvLowWpRtw-OscIydQ24RSB
Content-Disposition: form-data; name="id"
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

ChecknLoadEnvironmentData
--bEDi1DhmFcmCTebUvLowWpRtw-OscIydQ24RSB
Content-Disposition: form-data; name="file"; filename="myfile.xml"
Content-Type: text/xml; charset=ISO-8859-1
Content-Transfer-Encoding: binary

<?xml version="1.0" encoding="ISO-8859-1" ?>
<Dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ImportProgramVersion>3.1</ImportProgramVersion> 
    <Year>2012</Year> 
    ....
    .... 
</Dataset>
--bEDi1DhmFcmCTebUvLowWpRtw-OscIydQ24RSB--

但这似乎因 500 内部服务器错误而失败,而 PostMan 则成功。

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="id"

ChecknLoadEnvironmentData
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="filename"

myXML.xml
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="file"; filename="myXML.xml"
Content-Type: text/xml


----WebKitFormBoundaryE19zNvXGzXaLvS5C

所以我的问题是,我可以用“apache.httpclient”删除java中的字符集和内容传输编码吗?所以我可以消除两个请求之间的差异。我查看了库源,似乎不可能,它总是默认为某个值。

(为什么 Postman 不显示我发送的 xml 文件?)

4

1 回答 1

1

确保在使用 Apache HttpClient 生成多部分 mime 实体时使用所谓的“宽松”模式

http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntityBuilder.html#setLaxMode()

于 2014-11-19T14:31:03.907 回答