如何使用 HTTParty 实现这个 POST 请求? [英] How can I implement this POST request using HTTParty?
本文介绍了如何使用 HTTParty 实现这个 POST 请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法使用 Ruby 的 HTTParty 库向 API 端点发出 POST 请求.我正在与之交互的 API 是 Gittip API,它们的端点需要身份验证.我已经能够使用 HTTParty 成功发出经过身份验证的 GET 请求.
您可以在示例代码中看到:
user = "gratitude_test"api_key = "5962b93a-5bf7-4cb6-ae6f-aa4114c5e4f2"# 我已经包含了真实的凭据,因为以上只是一个测试帐户.HTTParty.get("https://www.gittip.com/#{user}/tips.json",{ :basic_auth =>{:用户名=>api_key } })
该请求有效并按预期返回以下内容:
<预><代码>[{金额"=>"1.00",平台" =>"gittip",用户名" =>whit537"},{金额"=>"0.25",平台" =>"gittip",用户名" =>约翰凯利弗格森"}]但是,我一直无法使用 HTTParty 发出成功的 POST 请求.Gittip API 描述了使用 curl 发出 POST 请求,如下所示:
curl https://www.gittip.com/foobar/tips.json -u API_KEY: -X POST -d'[{"username":"bazbuz", "platform":"gittip", "amount": "1.00"}]' -H"内容类型:应用程序/json"
我已经尝试(未成功)使用 HTTParty 构建我的代码,如下所示:
user = "gratitude_test"api_key = "5962b93a-5bf7-4cb6-ae6f-aa4114c5e4f2"HTTParty.post("https://www.gittip.com/#{user}/tips.json",{:body =>[ { 金额" =>0.25",平台"=>"gittip", "用户名" =>whit537"}],:basic_auth =>{:用户名=>api_key },:headers =>{ '内容类型' =>'应用程序/json' }})
第一个参数是 url,第二个参数是选项哈希.当我运行上面的代码时,出现以下错误:
NoMethodError: 未定义方法 `bytesize' for [{"amount"=>"0.25", "platform"=>"gittip", "username"=>"whit537"}]:Array来自/Users/John/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http/generic_request.rb:179:in `send_request_with_body'
我尝试了构建 API 调用的各种其他组合,但无法弄清楚如何使其工作.这是另一个这样的例子,我不使用数组作为主体的一部分并将内容转换为 to_json
.
user = "gratitude_test"api_key = "5962b93a-5bf7-4cb6-ae6f-aa4114c5e4f2"HTTParty.post("https://www.gittip.com/#{user}/tips.json",{:body =>{金额"=>0.25",平台"=>"gittip", "用户名" =>"whit537" }.to_json,:basic_auth =>{:用户名=>api_key },:headers =>{ '内容类型' =>'应用程序/json' }})
返回以下内容(500 错误):
<头><title>500 内部服务器错误</title>头部><body>
内部服务器错误,程序!
<pre></pre>