1

我需要调用一个外部 url 从远程数据库中提取一些信息。

我尝试像这样设置我的电话:

post_params = {'a' => 'b', 'b' => 'c',}
resp = Net::HTTP.post_form(URI.parse('https:/my.remoteserver.com/'), post_params)

但是,由于 url 是 HTTPS,这会返回 400 Bad Request。

但是,如果我将调用格式化为 GET,并执行以下操作:

url = URI.parse("https:/my.remoteserver.com?a=b&b=c")
result = Net::HTTP.start(url.host, use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE) do
  |http| http.get url.request_uri, 'User-Agent' => 'MyLib v1.2'
end

一切正常。不幸的是,在我的具体情况下,我不能使用 GET。我认为有一种方法可以通过 POST 做到这一点,但我只是不知道那会是什么。如果有人可以帮助我解决这个问题,我将不胜感激。谢谢!

4

1 回答 1

7

另一个答案链接的关键部分,以及问题的原因可能是因为您需要use_ssl = trueNet::HTTP元素上设置:

例子:

post_params = {'a' => 'b', 'b' => 'c',}

uri = URI 'https:/my.remoteserver.com/'

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'

resp = http.post_form(uri, post_params)
于 2012-08-29T20:45:16.250 回答