Ruby on Rails HTTPS Post Bad Запрос - PullRequest
       20

Ruby on Rails HTTPS Post Bad Запрос

1 голос
/ 12 ноября 2009

Привет всем.

Мое приложение работает с удаленным сервером. Сервер использует 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. Буду рад любым мыслям!

1 Ответ

0 голосов
/ 12 ноября 2009

Вы не заполняете данные заголовка.

Вы можете использовать метод Net :: HTTP.post_form, чтобы создать свой запрос, или заполнить данные формы самостоятельно.

решение 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)
...