1

みなさん、こんにちは。

私のアプリケーションはリモートサーバーで動作します。サーバーは証明書の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を使用しています。どんな考えでも嬉しいです!

4

1 に答える 1

0

ヘッダーデータを埋めていません。

Net::HTTP.post_form メソッドを使用してリクエストを作成するか、自分で form_data を入力することができます。

post_form ソリューション:

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

手動フォーム_データ入力

req =
  Net::HTTP::Post.new("/cgi-bin/expr/payment_transactions.verify_order")
req.set_form_data(params)
于 2009-11-12T06:58:57.783 に答える