使用HTTParty发送POST请求时,Timestamp整数请求头报错问题
解决HTTParty POST请求中Timestamp头的NoMethodError问题
这个问题我之前也碰到过!根源很简单——HTTParty对请求头的处理有个小细节:它会自动对每个头的值调用strip方法来去除首尾空白,但你传给Timestamp的是个整数类型的时间戳,整数根本没有strip方法,这不就直接抛出错误了嘛。
修复方案
只需要把整数类型的时间戳转换成字符串就行,修改Time.now.to_i为Time.now.to_i.to_s,让HTTParty能正常处理这个请求头值。
修正后的完整代码
response = HTTParty.post( route, body: options[:body].to_json, headers: { 'Timestamp' => Time.now.to_i.to_s, # 将整数时间戳转为字符串 'Authorization' => "Bearer #{options[:token]}", 'Content-Type' => 'application/json' } )
顺便提一句:HTTP协议里的请求头值本质上都是字符串,哪怕API文档说明是整数字段,也得以字符串形式传递,这样HTTParty才能正确处理,同时API端也能正常解析这个字符串为整数。
内容的提问来源于stack exchange,提问作者Steve Q




