将curl转换为ruby等效物

时间:2013-03-14 07:04:35

标签: ruby-on-rails ruby json curl httparty

我无法将curl转换为ruby脚本。基本上我正在尝试使用parse.com RESTful api。这是卷曲

curl -X POST \
-H "X-Parse-Application-Id: XXX" \
-H "X-Parse-REST-API-Key: YYY" \
-H "Content-Type: application/json" \
-d '{
   "channels": [
     "Giants",
     "Mets"
   ],
   "data": {
     "alert": "test message"
   }
 }' \
 https://api.parse.com/1/push

这就是我一直在尝试做的事情(使用HttParty)

puts "hello world"

require 'httparty'

require 'json'

class Parse
    include HTTParty
    base_uri "api.parse.com:443"
    headers "X-Parse-Application-Id" => "XXX", "X-Parse-REST-API-Key" =>  "YYY", "Content-Type" => "application/json"

end

option = {:channels => "Giants", :data => {:alert => "un mensaje de mierda"}}
puts Parse.post("/1/push", body: option.to_json)

我收到错误代码107,说无效的json。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为你只需要在第二个参数中将ruby结构序列化为JSON。 param应该是POST的字符串,而不是Ruby结构。

我认为这样可行(只有其他可能出现的问题是您是否会在编写代码时通过https连接):

data = {"channels": ['Giants'], "data": {alert: 'un mensaje '}}
puts Parse.post("/1/push", body: data.to_json)

。 。 。 Ruby数据结构中类似JSON的格式是 not JSON,

foo: "bar"

只是另一种Ruby(1.9+)说法

:foo => "bar"