我需要在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