通过HTTPS Ruby on Rails进行POST

时间:2012-08-29 19:44:33

标签: ruby-on-rails post https

我需要调用外部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做到这一点,但我只是不知道那会是什么。如果有人能帮我解决这个问题,我真的很感激。谢谢!

2 个答案:

答案 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)

获取灵感from this blog post