我需要将multipart / form-data内容发送到Web服务器,并在响应中接收和解析multipart / form-data。我已经阅读了多篇关于如何将多部分内容发送到服务器并在服务器上解析的帖子。例如:see here。但是我发现网上没有发布关于从服务器到客户端发送二进制文件和其他一些键值对的帖子(在我的情况下是一个pojo或android活动)。任何帮助都感激不尽。
答案 0 :(得分:0)
我等了一会儿,发现我的问题没有答案。我自己找到了解决方案。虽然我认为它不是最有效的,但它消除了障碍并让我继续前进。这是解决方案:
在发件人方(服务器或客户端):使用org.apache.commons.codec.binary.Base64来编码TMString(byte [] fileRepresentedAsBytes)并发送HTTP Content-Type = text / plain。
在接收方(服务器或客户端):使用org.apache.commons.codec.binary.Base64.decode方法返回bytes []并从中创建文件。
以下是http servlet的代码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
File file = new File(<your-file-here>);
Base64 b = new Base64();
String fileStr = b.encodeToString(IOUtils.toByteArray(new FileInputStream(file)));
String queryString = "file=" + fileStr + "&foo=bar";
resp.setHeader("Content-Type", "text/plain");
resp.getWriter().print(queryString);
resp.getWriter().flush();
resp.getWriter().close();
}
在客户端,只需使用apache http utils中的查询字符串解析器并使用Base64.decode。这将使您能够在客户端和服务器之间传递文件和其他纯文本参数。请记住,在我的情况下,客户端是POJO对象而不是浏览器。这就是为什么我说如果你想从客户端发送文件到服务器或从服务器发送到客户端无关紧要。
如果有人可以在这里发帖,我会很乐意学习其他更有效的方法。