【问题标题】:Ruby on Rails HTTPS Post Bad RequestRuby on Rails HTTPS 发布错误请求
【发布时间】:2010-12-15 17:50:34
【问题描述】:

大家好。

我的应用程序与远程服务器一起工作。服务器使用 https 证书的授权。我有以下代码来授权和 发送请求:

uri = URI.parse("https://db1-test.content.ertelecom.ru/")
http = Net::HTTP.new(uri.host, '443')
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.ca_file = File.join(File.dirname("public/certificate.pem"),
"certificate.pem")
http.start do |http|
      req =
Net::HTTP::Get.new("/cgi-bin/expr/export.get_pay_systems?partner_id=1003")
      responce = http.request(req)
      resp = responce.body
end

这段代码运行良好,我从服务器获取数据。但是当我尝试 发出 POST 请求:

http.start do |http|
      req =
Net::HTTP::Post.new("/cgi-bin/expr/payment_transactions.verify_order",
params)
      responce = http.request(req)
      resp = responce.body
end

我从服务器收到一个错误:

Your browser sent a request that this server could not understand.
Request header field is missing ':' separator.

那是什么?我试图找到解决方案,但无济于事。这 互联网捕捉到它可能是防病毒软件的消息,但我在 Linux。我会很高兴有任何想法!

【问题讨论】:

    标签: ruby-on-rails post https bad-request


    【解决方案1】:

    您没有填写标题数据。

    您可以使用 Net::HTTP.post_form 方法创建您的请求或自己填充 form_data。

    post_form 解决方案:

    req = NET::HTTP.post_form("/cgi-bin/expr/payment_transactions.verify_order", params)
    

    手动form_data填充

    req =
      Net::HTTP::Post.new("/cgi-bin/expr/payment_transactions.verify_order")
    req.set_form_data(params)
    

    【讨论】:

    • 奇怪...当我尝试使用 set_form_data 我得到:未定义的方法 `set_form_data=' for #<:http::post post> 当我使用 post_form: 你有一个 nil 对象时你没想到!评估 nil 时发生错误。+
    • 所有作品!只需要使用以下语法:req.set_form_data(params)
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多