我需要计算我的原始HTTP post请求的哈希值,并将其与Java中标题中的签名哈希值进行比较。问题是,我尝试了多种方法,但我无法提取发送的确切POST请求。随附的是:
我需要完全相同的字符串(以及所有%和其他符号),因为即使单个空格差异也会生成错误的哈希值。我们可以在这里使用自定义过滤器,如果是,那么究竟是什么?
答案 0 :(得分:1)
您使用的是servlet还是球衣?在servlet中,您可以获取请求的原始流并转换为字符串。 HttpServletRequest#getInputStream()
或getReader。
e.g
InputStream body = request.getInputStream();
// ..
编辑:添加我拥有的代码,该代码有效。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
InputStream is = request.getInputStream();
//this convertStreamToString is my internal method. You can have any your own conversion API
System.out.println("----"+convertStreamToString(is));
processRequest(request, response);
}