Java 使用Apache HttpClient在多部分HTTP请求部分设置上传文件的内容传输编码

Java 使用Apache HttpClient在多部分HTTP请求部分设置上传文件的内容传输编码,java,apache,http,multipart,Java,Apache,Http,Multipart,我正在使用ApacheHTTP库构建并发送一个包含多个部分的http请求,该请求的正文中包含一个文件部分。这是我请求的一个小样本 Request POST HTTPS://hostname:9443/di/resources/upload?logonId=user1 HTTP/1.1: Headers: Content-Type: multipart/form-data Set-Cookie: Path=/; HttpOnly TrustToken: -1000%2CCaKOjiTFmje

我正在使用ApacheHTTP库构建并发送一个包含多个部分的http请求,该请求的正文中包含一个文件部分。这是我请求的一个小样本

Request POST HTTPS://hostname:9443/di/resources/upload?logonId=user1 HTTP/1.1:
 Headers: Content-Type: multipart/form-data  Set-Cookie: Path=/; HttpOnly  TrustToken: -1000%2CCaKOjiTFmje3%2Fw0GGcw5%2BDwgxXHjHdQShQgW1QGiHYk%3D  
 Body: --ncFZGuKp50zCWWImlBFZjxbanSSoJt
Content-Disposition: form-data; name="File 1"; filename="SampleData_en.csv"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

Identifier,title,,,,,,,,,,,,,,
Plan: Entries (1) or ent2 (2) ,2,"Set to 1 to specify plan is for Catalog Entries, set to 2 etc ..... 

--ncFZGuKp50zCWWImlBFZjxbanSSoJt--
该项目是基于ApacheWink的服务,该服务在解码正文中的头时遇到问题,从而导致此类错误

Caused by: java.lang.StringIndexOutOfBoundsException
        at java.lang.String.substring(String.java:1240)
        at org.apache.wink.common.internal.providers.multipart.MultiPartParser.parseHeaders(MultiPartParser.java:264)
        at org.apache.wink.common.internal.providers.multipart.MultiPartParser.nextPart(MultiPartParser.java:109)
        at org.apache.wink.common.model.multipart.InMultiPart.hasNext(InMultiPart.java:83)
我相信解决方法是从正文中删除内容传输编码?或者把它改成另一种编码,可能是base64

唯一的问题是,我不知道如何使用apache库来实现这一点,并且还没有找到任何示例。下面是我正在使用apache创建HttpPost请求的实体部分的代码:

MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create();

File file1 = RequestUtils.getFileBody(filePath);
FileBody fileBodyFile1 = new FileBody(file1, org.apache.http.entity.ContentType.create("application/octet-stream"),
file1 .getName());
reqEntity.addPart("File 1", fileBodyFile1);

如果你可以考虑使用另一个抱歉,那不是我的选择:(谢谢你的建议。我仍然希望我所要求的是Apache。