将cURL请求转换为Ruby post请求

时间:2015-03-14 11:36:17

标签: ruby json http post curl

我正在尝试转换一个快速的cURL hack,我做了一段时间回到Ruby等效。即将到来。

我从

的开放JSON API下载数据
http://api.turfgame.com/v4/users

使用以下cURL命令

curl -s -X POST -H "Content-Type: application/json" -d '[{"name": "tbone"}]' api.turfgame.com/v4/users

我的微弱尝试已经缩短了。到目前为止,我所做的是

require 'net/http'
require 'rubygems'
require 'json'
require 'uri'

url = "http://api.turfgame.com/v4/users"
uri = URI.parse(url)
data = {"name" => "tbone"}

headers = {"Content-Type" => "application/json"}

http = Net::HTTP.new(uri.host,uri.port)

response = http.post(uri.path,data.to_json,headers)
    puts response.code
    puts response.body

我收到的错误消息是

400
{"errorMessage":"Invalid JSON string","errorCode":195887105}

我猜测我没有正确发送请求,但是如何?

欢迎任何指针!感谢

1 个答案:

答案 0 :(得分:0)

你的curl请求有这个内容[{"name": "tbone"}](里面有一个哈希的数组),但在你的Ruby版本中,你只需发送没有包装数组的哈希{"name" => "tbone"}

将您的data更改为:

data = [{"name" => "tbone"}]