爲了使用第三方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