我正在开发rails环境。我正在使用 Net :: HTTP 模块来调用外部API并获得响应。这在我当地的主机上工作正常。但是在暂存它时会抛出 Net :: HTTPBadResponse 错误。我的暂存是启用SSL的。这是不同的。提供下面的代码段和错误。
parameters = {'VirtualNumber' => '09845xxxxxx','Number[]' => "09878xxxxxx" }
x = Net::HTTP.post_form(URI.parse("https://example.com"), parameters)
Error:
Net::HTTPBadResponse (wrong status line: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">")
成功的结果将是XML格式。任何人都可以帮我解决这个问题。
谢谢你,
问候
答案 0 :(得分:2)
问题是从启用了ssl的站点调用API。因此,在调用API时,我们需要启用ssl。并且需要提供基本身份验证。
parameters = {'VirtualNumber' => '09845xxxxxx','Number[]' => "09878xxxxxx" }
url = URI.parse("https://example.com")
request = Net::HTTP::Post.new(url.path)
request.basic_auth "user", "pass"
request.set_form_data(parameters)
sock = Net::HTTP.new(url.host, url.port)
if url.scheme == 'https'
sock.use_ssl = true
end
response = sock.start {|http| http.request(request) }