2017-04-03 54 views
0

我正在运行一个简单的Sinatra应用程序,我需要查询一些数据并通过JSON发送POST到一个webhook URL进行处理。我不知道如何正确格式化我为HTTParty检索到的记录。无法通过HTTParty POST ActiveRecord查询结果

联系人正在打印到/account/{account_id}/contacts.json我希望他们如何,他们的数据只是没有成功发送。

app.rb

get "/account/:account_id/contacts.json" do 
    @contacts = Contact.where("sfid = ?", params[:account_id]) 
    HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", 
    { 
    :body => [ @contacts ].to_json, 
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} 
    }) 
    @contacts.to_json 
end 
+0

首先,存在如何差异数据正在打印'@ contacts.to_json'以及它们如何发送'[@contacts] .to_json'。这可能是问题所在。但如果不是这样,我们需要更多关于你如何确定它没有被发送的信息。 –

+0

'where'已经将数组返回给变量'@ contacts'。所以'@ contacts'类型已经是一个数组。我不认为在转换为json之前需要再次转换为数组。 ':body => @ contacts.to_json'没问题。 – Mayank

+0

@AndréGuimarãesSakata我敢肯定,它不会被发送,因为我有一个测试路线,发送 HTTParty.post(“https://hooks.webapp.com/hooks/catch/387409/1us4j3/”, { :body => [':'='value1',:privacy =>'value2'}] .to_json, :headers => {'Content-Type'=>'application/json','Accept'=>'application/json'} }) 成功并被webhook捕获。我在我的问题中发布的代码没有被捕获。 – csakon

回答

1

这似乎错误是

2.3.1/lib中/红宝石/ 2.3.0/NET/HTTP/generic_request.rb:183:在`send_request_with_body'

它没有在您的请求中找到任何内容。您正在发送哈希中的参数主体和头部。

试试这个:

get "/account/:account_id/contacts.json" do 
    @contacts = Contact.where("sfid = ?", params[:account_id]) 
    HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", 
    :body => @contacts.to_json, 
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} 
) 
    @contacts.to_json 
end 

您还可以检出这个职位的任何详细信息,关于HTTP发布Here

希望这有助于..

+0

这样做,感谢您的帮助 – csakon