我需要调用外部URL来从远程数据库中提取一些信息。
我试着像这样设置我的电话:
post_params = {'a' => 'b', 'b' => 'c',}
resp = Net::HTTP.post_form(URI.parse('https:/my.remoteserver.com/'), post_params)
然而,这返回400 Bad Request,因为url是HTTPS。
但是,如果我将呼叫格式化为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做到这一点,但我只是不知道那会是什么。如果有人能帮我解决这个问题,我真的很感激。谢谢!
答案 0 :(得分:7)
其他答案链接的关键部分以及问题的原因可能是因为您需要在use_ssl = true
元素上设置Net::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)
答案 1 :(得分:0)