为了使用第三方API,我需要将Net :: HTTP :: Post请求编码为MD5十六进制摘要,然后将其用作签名。然而,当我尝试只是Digest::MD5.hexdigest(req)
,它抛出一个“不能转换为字符串错误”,而当我明确req.to_s
,它只是给的#<Net::HTTP::Post:0x112a0eef8>
将Rails Net :: HTTP请求转换为MD5十六进制摘要
的MD5我干脆:
request = Net::HTTP::Post.new(url.path)
request.body = {
"key" => "val"
}.to_json
# later...
hexDigest = Digest::MD5.hexdigest(request)
这是我记录的文档规范:“[与]包含新信息的JSON正文。”
这是相关的Java代码示例,它们提供:
ByteArrayOutputStream requestOutputStream = new ByteArrayOutputStream();
httpMethod.getEntity().writeTo(requestOutputStream);
DigestUtils.md5Hex(requestOutputStream.toByteArray()).toLowerCase();
任何想法? 谢谢!
所以,那运行,但我得到一个身份验证错误。我正在检查它是否是其他内容,但是我担心,因为'req.to_s'会导致'“#'' –
Narfanator
另一方面,'get'结果在'“#”',并且仍然有效sooo –
Narfanator
不 - 它运行在“GET”上,因为我没有'to_s' GET。你的回答不起作用。 – Narfanator