【问题标题】:Can't POST results of ActiveRecord query via HTTParty无法通过 HTTParty 发布 ActiveRecord 查询的结果
【发布时间】:2017-08-28 22:25:53
【问题描述】:

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

联系人正在打印到 /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

【问题讨论】:

  • 首先,@contacts.to_json 的数据打印方式和[ @contacts ].to_json 的发送方式有所不同。这可能是问题所在。但如果不是,我们需要有关您如何确定它没有被发送的更多信息。
  • 'where' 已经将数组返回到变量 @contacts 。所以@contacts 的类型已经是一个数组。我认为在转换为 json 之前不需要再次转换为数组。 :body => @contacts.to_json 没问题。
  • @AndréGuimarãesSakata 我确定它没有被发送,因为我有一个发送 HTTParty.post("hooks.webapp.com/hooks/catch/387409/1us4j3", { :body => [ {:name => 'value1' , :privacy => 'value2'} ].to_json, :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} }) 成功并被网络挂钩。我在问题中发布的代码没有被捕获。
  • @Mayank 我按照您的建议尝试了/contacts.to_json,但出现了内部服务器错误和这些日志 - evernote.com/shard/s2/sh/60c2d37d-df78-43d9-ac1d-0dacc4f926eb/…

标签: json ruby activerecord sinatra httparty


【解决方案1】:

似乎错误是

2.3.1/lib/ruby/2.3.0/net/http/generic_request.rb:183:in `send_request_with_body'

它没有在您的请求中找到任何正文。您正在哈希中发送参数 body 和 head 。

试试这个:

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 的更多信息

希望这会有所帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多