簡體   English   中英

Ruby:將 curl 命令轉換為 Ruby net/http 請求

[英]Ruby: convert curl command into Ruby net/http request

我想將此命令行 curl 命令轉換為 Ruby net/http 請求:

curl -u user:pword --insecure -XGET " https://192.168.10.10:3000/_search/template?pretty=true " -H 'Content-Type:application/json' -d'{"id":" search_template_services", "params":{"environment":"prod","start_time":"2019-01-01T00:00:00.000Z","end_time":"2020-01-01T00:00:00.000Z", "cantons":["AG"],"service":"WMS","re​​quest":"getmap"}}'

我的嘗試:

endpoint = 'https://192.168.10.10:3000/_search/template/?pretty=true&id=search_template_services&environment=prod&start_time=2019-01-01T00:00:00.000Z&end_time=2020-01-01T00:00:00.000Z&cantons=AG&service=WMS&request=getmap'

puts "url: #{endpoint}"
uri = URI(endpoint)

Net::HTTP.start(uri.host, uri.port,
                use_ssl: uri.scheme == 'https',
                verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http|
  request = Net::HTTP::Get.new uri.request_uri
  request.basic_auth('user', 'pword')
  @response = http.request request
end

data = JSON.parse(@response)

但我收到錯誤:

/usr/lib/ruby/2.4.0/json/common.rb:156:in `initialize': 沒有將 Net::HTTPBadRequest 隱式轉換為 String (TypeError)

顯然 URL 不正確。 如果我使用 curl 它可以工作。

如何修復 net/http 請求?

這是一個將許多(不是全部)curl 命令轉換為 Ruby 的網站:

http://jhawthorn.github.io/curl-to-ruby

我通過這個運行了你的 curl 命令。 生成的 Ruby 代碼似乎可以運行,但由於它與私人服務器聯系,我無法對其進行全面測試。 這是代碼:

require 'net/http'
require 'uri'
require 'json'
require 'openssl'

uri = URI.parse("https://192.168.10.10:3000/_search/template?pretty=true")
request = Net::HTTP::Get.new(uri)
request.basic_auth("user", "pword")
request.content_type = "application/json"
request.body = JSON.dump({
  "id" => "search_template_services",
  "params" => {
    "environment" => "prod",
    "start_time" => "2019-01-01T00:00:00.000Z",
    "end_time" => "2020-01-01T00:00:00.000Z",
    "cantons" => [
      "AG"
    ],
    "service" => "WMS",
    "request" => "getmap"
  }
})

req_options = {
  use_ssl: uri.scheme == "https",
  verify_mode: OpenSSL::SSL::VERIFY_NONE,
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

# response.code
# response.body

暫無
暫無

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

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