java - 如何在 Java 中解码 http POST 数据?

标签 java http post netty

我正在使用 Netty,我必须接受并解析 http POST 请求。据我所知,Netty 没有对 POST 的内置支持,只有 GET。 (这是一个处理原始网络操作的相当低级的库。使用开箱即用的 servlet 容器不是一种选择。)

如果我将 POST 请求的内容作为字节数组,将其解析为参数映射的最快且最无错误的方法是什么?

我可以自己写这个,但是必须有一些内置到 JDK 中的方法可以使这更容易。我敢打赌有一些陷阱和极端情况需要处理。

最佳答案

Netty有一个高级的POST请求解码器(HttpPostRequestDecoder)可以解码 Http 属性,使用分块编码的 FileUpload 内容。

这是一个简单的表单解码示例

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
  HttpRequest request = (HttpRequest) e.getMessage();
  HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), request);

  InterfaceHttpData data = decoder.getBodyHttpData("fromField1");
  if (data.getHttpDataType() == HttpDataType.Attribute) {
     Attribute attribute = (Attribute) data;
     String value = attribute.getValue()
     System.out.println("fromField1 :" + value);
  }
}

关于java - 如何在 Java 中解码 http POST 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659522/

相关文章:

wcf - RestSharp 将对象发布到 WCF

apache - OctoPrint 通过 Apache 反向代理 400 错误登录请求

java - 动画期间屏幕闪烁白色

java - 无法绑定(bind) logging.level.* 或 someproperty.*=some_value 下的属性

java - 如何使用 DozerBeanMapper 将具有对象数组列表的 HashMap(列表是 HashMap 中的值)映射到另一个 HashMap?

json - 如何使用 VBA 从 url 导入 json 数据?

php - 如何在没有html的情况下仅使用url在php中上传文件?

java - Spring Boot 和安全 : How to extend response for 302 status code?

javascript - 检查数据是否发布在 reactJS 中

java - 高效实现 Java native 接口(interface)网络摄像头源