当前位置: 首页 > 知识库问答 >
问题:

如何从Spring处理的POST请求中获取原始二进制数据?

何承
2023-03-14

我需要编写一个能够处理CUrl发送的二进制数据的应用程序,例如:

curl localhost:8080/data --data-binary @ZYSF15A46K1.txt

我创建了一个POST处理方法,如下所示:

@RequestMapping(method = RequestMethod.POST, value = "/data")
    public void acceptData(HttpEntity<byte[]> requestEntity) throws Exception {
        process(requestEntity.getBody());
    }

然而,它似乎没有返回原始的二进制数据。我试着发送一个GZip文件,在经历了Spring之后,它现在是可解压缩的,这让我相信我要么得到了太多的数据,要么得到了太少的数据。

如何解决此问题并获取原始二进制数据?

共有2个答案

暨正真
2023-03-14

我可以使用以下代码解决此问题:

@Bean
public FilterRegistrationBean registration(HiddenHttpMethodFilter filter) {
    FilterRegistrationBean registration = new FilterRegistrationBean(filter);
    registration.setEnabled(false);
    return registration;
}

@RequestMapping(method = RequestMethod.POST, value = "/data")
public void acceptData(HttpServletRequest requestEntity) throws Exception {
    byte[] processedText = IOUtils.toByteArray(requestEntity.getInputStream());
    processText(processedText);
}

默认情况下,Spring会进行预处理,这会导致< code>HttpServletRequest在到达< code>RequestMapping时为空。添加< code > FilterRegistrationBean Bean可以解决这个问题。

柴泰平
2023-03-14

这与在控制器方法的参数中声明InputStream一样简单:

@RequestMapping(method = RequestMethod.POST, value = "/data")
public void acceptData(InputStream dataStream) throws Exception {
    processText(dataStream);
}

您不需要禁用隐藏Http方法过滤器,如果您这样做,可能是您的请求在某些方面是错误的。请参阅 https://github.com/spring-projects/spring-boot/issues/5676。

 类似资料:
  • 我尝试做的是从同一个站点发布数据并从它创建一个新的订单(当提交按钮被点击时)。我没有任何信息在我的请求。身体,我怀疑是在我的ejs出了问题,任何反馈是非常感谢的。 我的ejs文件: 和我的js文件:

  • 我如何解析JSON请求之类的东西? 示例代码: 带有_名称的位置_为无

  • 我在tradingview中有一个警报,它会向我的服务器发送一个带有请求的webhook,其中一个简单的主体包含一些信息。webhook发送纯文本,它不发送JSON数据。 我想知道有没有办法得到纯文本数据 这是JSON webhook 这就是我的密码

  • 检查userDbRecord Mono是否为空以及如果不为空则从中提取phone属性的最佳方法是什么?

  • 介绍 有时候,浏览器会通过post发送很多数据。在webpy,你可以这样操作。 代码 class RequestHandler(object): def POST(self): data = web.data() # 通过这个方法可以取到数据

  • 问题内容: 我有以下django模板(将http:// IP / admin / start /分配给一个名为view的假设视图): 是视图中引用的Django模型的。每当单击“开始”提交输入时,我都希望“开始”视图在返回渲染页面之前使用函数中的数据。如何将POST(在本例中为隐藏输入)中发布的信息收集到Python变量中? 问题答案: 另外,你的隐藏字段还需要一个可靠的名称,然后是一个值: 然后