ruby - 在 Ruby 中将数据字段添加到其余客户端请求

标签 ruby rest-client uber-api

我在使用rest-client gem 向 uber api 发出请求时遇到问题。我认为问题在于我试图将所需信息作为 url 而不是数据字段中的参数传递。示例curl请求在-d之后有该参数,但我不知道如何使用rest-client来实现它。感谢您的帮助。

此请求在控制台中有效:

curl -v -H "Authorization: Bearer " + session[:request_token] \
     -H "Content-Type: application/json" -X POST -d \ '{"start_latitude":"37.334381","start_longitude":"-121.89432","end_latitude":"37.77703","end_longitude":"-122.419571","product_id":"a1111c8c-c720-46c3-8534-2fcdd730040d"}' \
https://sandbox-api.uber.com/v1/requests

来 self 的 Controller 的请求收到错误 406,这是 Not Acceptable 响应。

@uber_ride = JSON.load(RestClient::Request.execute(
  :method => :post,
  :url => "https://sandbox-api.uber.com/v1/sandbox/requests/product_id=#{@uberx_id}?start_latitude=#{lat_start}&start_longitude=#{lng_start}&end_latitude=#{lat_end}&end_longitude=#{lng_end}",
  :headers => {'Authorization' => 'Bearer ' + session[:request_token], 'content_type' => 'application/json'}
))  

我尝试为 data 添加一个附加字段,但出现 404 Resource Not Found 错误。

@uber_ride = JSON.load(RestClient::Request.execute(
  :method => :post,
  :url => "https://sandbox-api.uber.com/v1/sandbox/requests/",
  :data => {'start_latitude' => lat_start, 'start_longitude' => lng_start, 'end_latitude' => lat_end, 'end_longitude' => lng_end, 'product_id' => @uberx_id},
  :headers => {'Authorization' => 'Bearer ' + session[:request_token]},
  :content_type => :json
))  

最佳答案

我终于成功了。感谢 @mudasobwa 建议将 data => 更改为 payload =>。我还必须在有效负载对象周围添加单引号,以便其余客户端 gem 不会将其转换为 json。例如:'{}'。最后,我必须更改指定内容类型的方式,并在 :headers 中将其指定为 :content_type,而不是 'Content-Type' >。请参阅下文,了解目前正在运行的最终请求。变量 .to_s 有点困惑,但 5 小时后,这是我唯一可以工作的调用。

@uber_ride = (RestClient::Request.execute(
  :method => :post,
  :url => "https://sandbox-api.uber.com/v1/requests",
  :payload => '{"start_latitude":' + lat_start.to_s + ',"start_longitude":' + lng_start.to_s + ',"end_latitude":' + lat_end.to_s + ',"end_longitude":' + lng_end.to_s + ',"product_id":"' + @uberx_id.to_s + '"}',
  :headers => {'Authorization' => 'Bearer ' + session[:request_token], :content_type => 'application/json'}
))  

很高兴听到有关如何清理此问题的任何反馈。

关于ruby - 在 Ruby 中将数据字段添加到其余客户端请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849886/

相关文章:

c++ - 在 C++ 程序中嵌入 ruby​​ 源时出错

java - 将图像作为多部分文件接收到休息服务

uber-api - Uber Eats 优食有 API 吗?如果有,我在哪里可以找到更多信息

ios - 从我的应用程序打开优步,在不使用 sdk 的情况下预先填充上车和下车位置

ruby - 如何使用 rest-client 从 Waze 获取 GPS 数据?

swift - 使用 NSURLSession 通过 Uber API 进行身份验证

ruby - 如何在 Ruby 中将一个句子分成多个部分

python - Ruby 矩阵添加到多维数组

ruby - 如何从 watir 中的 td 获取数据,看起来像 "status"

ruby - 如何在不关注 RestClient 的情况下获取重定向 URL