接收二进制数据,post由apache和httpclient制作,multipartentity

gwo2fgha  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(455)

服务器在post请求中从客户机接收一些数据。为了发送数据,我使用smth如下:

HttpPost post = new HttpPost(_config.url);
MultipartEntity entity = new MultipartEntity();
for (Entry<String, ContentBody> e : params.entrySet()) {
    entity.addPart(e.getKey(), e.getValue());
}
post.setEntity(entity);

当服务器接受请求时,数据存储在请求体中。如果将其读取为char数组并将其转换为string,则可以看到以下信息:

--ltiKmQX6YRvytGyyKS_F3Zz__tVbvbQktQV
Content-Disposition: form-data; name="file"; filename="art21.jpg.0"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

ÿØÿàJFIFHHÿÛC
2!!22222222222222222222222222222222222222222222222222ÿOX"ÿÄ

但是,正如您所看到的,请求包含几个参数:filename和file。如何从请求主体获取这些参数?

6qfn3psc

6qfn3psc1#

最终找到解决方案:
要从post body获取数据二进制数据,我使用来自apache的servletfileupload:

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);

相关问题