我需要将 Rails 中的一些数据发布到外部 ASP。
我的 curl 命令正在运行:
printf 'foo=bar\r\nparameter1=4711\r\nparameter2=4712' | curl --data-binary @- http://example.com/request.asp
如何使用 net/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 = {
'foo' => 'bar\r\n',
'parameter1' => '4711\r\n',
'parameter2' => '4712'
}
但它不起作用。我需要对其进行编码,但如何编码?
我尝试使用 '\r\n': %0D%0A 的 URL 编码版本,但它不起作用。有没有办法像 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 a) 编码和 b) 添加“&”我不需要。直接设置身体是解决方案。