2009-11-12 3 views
1

인사말 모두.Ruby on Rails HTTPS 잘못된 요청 게시

내 응용 프로그램은 원격 서버에서 작동합니다. 서버는 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에 있습니다. 나는 어떤 생각이라도 기뻐할 것입니다!

답변

0

헤더 데이터를 채우지 않습니다.

요청을 만들거나 직접 form_data를 채우기 위해 Net :: HTTP.post_form 메소드를 사용할 수 있습니다.

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) 
+0

이상한 ... 내가 사용 set_form_data을하려고 할 때 내가 얻을 : 정의되지 않은 메서드를'set_form_data = '번호 <인터넷 : HTTP : Post POST> post_form을 사용할 때 : 기대하지 않았을 때 개체가 없습니다! nil을 평가하는 중에 오류가 발생했습니다. + – Finist

+0

모두 작동합니다! 다음 구문을 사용해야합니다. req.set_form_data (params) – Finist