相关疑难解决方法(0)

方便的方法来解析Servlet中传入的multipart/form-data参数

是否有任何方便的方法来读取和解析来自传入请求的数据.

例如客户发起邮寄请求

URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
PrintWriter writer = null;
try {
    OutputStream output = connection.getOutputStream();
    writer = new PrintWriter(new OutputStreamWriter(output, charset), true); // true = autoFlush, important!
    // Send normal param.
    writer.println("--" + boundary);
    writer.println("Content-Disposition: form-data; name=\"param\"");
    writer.println("Content-Type: text/plain; charset=" + charset);
    writer.println();
    writer.println(param);
Run Code Online (Sandbox Code Playgroud)

我无法使用param request.getParameter("paramName").以下代码

BufferedReader reader = new BufferedReader(new InputStreamReader(
    request.getInputStream()));
  StringBuilder sb = new StringBuilder();
  for (String line; (line = reader.readLine()) != null;) {
   System.out.println(line);

  }
Run Code Online (Sandbox Code Playgroud)

但是为我显示内容

-----------------------------29772313742745 …
Run Code Online (Sandbox Code Playgroud)

java servlets urlconnection

63
推荐指数
3
解决办法
13万
查看次数

Java:接收多部分HTTP响应

我正在编写一个Java客户端应用程序来接收来自IP摄像头的实时M-JPEG视频.视频由摄像机作为无限多部分HTTP消息发送,其中每个部分都是单个JPEG帧.我需要在它们到达时处理每个帧,所以我希望有一种方法可以在收到每个消息部分/视频帧时发出异步触发事件的HTTP请求.

是否有人知道任何库可以做到这一点?我在Google上找到的所有示例都不会起作用,因为他们使用的阻塞调用只解析响应,并在整个响应完成后将其分解为部分(显然不适用于无休止的响应).

我意识到我可以通过搜索消息边界手动将数据拆分成部分,但感觉就像我要重新发明轮子一样.

java http multipart

10
推荐指数
1
解决办法
1万
查看次数

在 Java 中解析包含多部分/表单数据请求正文的字符串

问题陈述

我认为标题说明了一切:我正在寻找解析包含 multipart/form-data HTTP 请求正文部分的String的方法。即字符串的内容看起来像这样:

--xyzseparator-blah
Content-Disposition: form-data; name="param1"

hello, world
--xyzseparator-blah
Content-Disposition: form-data; name="param2"

42
--xyzseparator-blah
Content-Disposition: form-data; name="param3"

blah, blah, blah
--xyzseparator-blah--
Run Code Online (Sandbox Code Playgroud)

我希望得到的是一张parameters地图,或者类似的东西。

parameters.get("param1");    // returns "hello, world"
parameters.get("param2");    // returns "42"
parameters.get("param3");    // returns "blah, blah, blah"
parameters.keys();           // returns ["param1", "param2", "param3"]
Run Code Online (Sandbox Code Playgroud)

进一步的标准

  • 如果我不必提供分隔符(即 xyzseparator-blah在这种情况下),,但如果我必须这样做,我可以忍受它。
  • 我正在寻找基于库的解决方案,可能来自主流库(如“Apache Commons”或类似的东西)。
  • 我想避免推出自己的解决方案,但在目前阶段,恐怕我不得不这样做。原因:虽然上面的示例通过一些字符串操作来拆分/解析似乎微不足道,但真正的多部分请求主体可以有更多的标头。除此之外,我不想重新发明(更不用说重新测试!)轮子:)

替代方案

如果有一个满足上述条件的解决方案,但其输入是 ApacheHttpRequest而不是 a String,那也是可以接受的。(基本上,我确实收到了一个HttpRequest,但我使用的内部库是这样构建的,它将此请求的主体提取为字符串,并将其传递给负责进行解析的类。但是,如果需要的话,我也可以直接在HttpRequest.)

相关问题

无论我如何尝试通过 Google、SO 和其他论坛找到答案,解决方案似乎总是使用commons fileupload来浏览各个部分。例如:herehere、 …

java apache http multipart

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×3

http ×2

multipart ×2

apache ×1

servlets ×1

urlconnection ×1