2017-04-03 50 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