簡體   English   中英

通過Ruby on Rails將JSON發送到API網址

[英]Sending a JSON to an API Url through Ruby on Rails

我有一個要發送到Google的QXP Express API的json對象。 我的想法是向我發送帶有相關旅行信息的對象。 在終端中,通過curl可以很容易地發送它。 我只是使用以下curl命令。 Doc.json是json的文件名。

curl -d @doc.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=AIzaSyAaLHEBBLCI4aHLNu2jHiiAQGDbCunBQX0

這是我在Ruby中執行的代碼。

uri = URI('https://www.googleapis.com/qpxExpress/v1/trips/search?key=MYAPIKEY')
req = Net::HTTP::Post.new uri.path

req.body = {
  "request" => {
    "passengers" => {
      "adultCount" => 1
    },
    "slice" => [
      {
        "origin" => "BOS",
        "destination" => "LAX",
        "date" => "2014-10-14"
      },
      {
        "origin" => "LAX",
        "destination" => "BOS",
        "date" => "2014-11-14"
      }
    ]
  }
}.to_json

res = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http.ssl_version = :SSLv3
  http.request req
end

puts res.body

但是我回來了以下錯誤。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "parseError",
    "message": "This API does not support parsing form-encoded input."
   }
  ],
  "code": 400,
  "message": "This API does not support parsing form-encoded input."
 }
}

我只需要將其與json文件一起發送,但是我找不到在線內容涵蓋將json發送到API的內容。 請幫助,我很困。

總是喜歡使用哪種工具,但是就我而言,我目前正在使用rest-client gem訪問REST API。 使用這個庫,您的示例可以這樣寫:

require 'json'
require 'rest-client'
response = RestClient.post 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=AIzaSyAaLHEBBLCI4aHLNu2jHiiAQGDbCunBQX0',
             {
               request: {
                 passengers: {
                   adultCount: 1
                 },
                 slice: [
                   {
                     origin: "BOS",
                     destination: "LAX",
                     date: "2014-10-14"
                   },
                   {
                     origin: "LAX",
                     destination: "BOS",
                     date: "2014-11-14"
                   }
                 ]
               }
             }.to_json,
             :content_type => :json
puts response.body

但是,如果您只需要Net :: HTTP解決方案,那么這可能不適合您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM