【发布时间】:2020-04-29 17:53:32
【问题描述】:
我想将此命令行 curl 命令转换为 Ruby net/http 请求:
curl -u 用户:pword --insecure -XGET “https://192.168.10.10:3000/_search/template?pretty=true”-H 'Content-Type:application/json' -d'{"id":"search_template_services", "参数":{"环境":"prod","start_time":"2019-01-01T00:00:00.000Z","end_time":"2020-01-01T00:00:00.000Z","cantons" :["AG"],"service":"WMS","request":"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 转换为字符串 (TypeError)
显然网址不正确。如果我使用 curl 就可以了。
如何修复 net/http 请求?
【问题讨论】: