2

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

406 のエラーを受け取るコントローラーからの要求、受け入れられない応答。

@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
))  
4

1 に答える 1