2013-07-26 45 views
0

我有一个Spring MVC(3.2.2)应用程序,我需要检查请求主体的加密签名(在请求头中提供),其中包含类型application/x-www-form-urlencoded的数据如何在Spring MVC中获得逐字请求体?

我的问题:Spring MVC似乎无法获得实际的未处理的HTTP请求正文,从而检查签名。

  • 当我使用的请求处理方法@RequestBody注释,我得到的内容,但是各个表单字段都是随机的顺序 - 从解析表单数据显然再生。
  • 当我使用HttpServletRequest类型的参数,其体为空
  • 所以是ReaderInputStream参数。

如何防止或绕过请求主体的预处理?

+0

你不能:http://stackoverflow.com/a/2317344/1686330 –

+0

Btw:我认为这也是为什么amz s3签名是从请求参数的* ordered *列表构建的原因。 –

+0

@Dirk Lachowski:我完全愿意在确认签名之后自行完成参数解析 - 但我需要原始的,未处理的请求主体来做到这一点。 –

回答

0

现在,我使用一个servlet过滤器作为解决方法 - 它首先在过滤器链中,读取正文内容并将它们放入请求属性中,然后在控制器中进行检索。