我需要在Rails中將一些數據發佈到外部ASP。Ruby on Rails net/http發佈' r n'
我curl命令工作:
printf 'foo=bar\r\nparameter1=4711\r\nparameter2=4712' | curl --data-binary @- http://example.com/request.asp
如何做到這一點,淨/ HTTP?
保持參數之間的'\ r \ n'非常重要。
我至今編碼:
uri = URI.parse('http://example.com/request.asp')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(url.request_uri)
req.set_form_data(params)
response = http.request(req)
如何設置PARAMS?
我想是這樣的:
params = {
'foo' => 'bar\r\n',
'parameter1' => '4711\r\n',
'parameter2' => '4712'
}
但它不工作。我需要編碼它,但如何?
我試着用'\ r \ n'的URL編碼版本:%0D%0A但它沒有工作。有沒有什麼方法可以像curl那樣發送二進制文件?
謝謝。
編輯:感謝您的回答我找到了解決辦法:
uri = URI.parse('http://example.com/request.asp')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(url.request_uri)
req.body = "foo=bar\r\nparameter1=4711\r\nparameter2=4712"
response = http.request(req)
set_form_data一)編碼和b)增加了 「&」 既沒有我需要的。直接設置身體是解決方案。
看到這個問題:http://stackoverflow.com/questions/1252210/parametrized-get-request-in-ruby – arnep
但我不想要一個GET,我想要一個POST – Calmon
在他使用' POST'請求 – arnep