这是我的代码:
@data = "somedata\r\nsomadata\r\nsomadata\r\n"
uri = URI.parse(my_url)
http = Net::HTTP.new(uri.host, uri.port)
resp, body = http.post(uri.path, @data)
当我尝试运行它时,我收到一个'sysread'错误,说达到了文件结尾(EOFError)。 请注意,如果删除@data的\ r \ n,则不会发生错误,但我确实需要它。
我使用的是Ruby 1.8.7,但1.9.2中也出现了类似的问题。
我正在尝试将PHP类转换为Ruby,这是PHP代码:
$req = 'somedata\r\nsomadata\r\nsomadata\r\n';
$r = new HttpRequest($url, HttpRequest::METH_POST);
$r->addRawPostData($req);
$resp = $r->send()->getBody();
谢谢!
答案 0 :(得分:0)
你不能在Http Post中使用换行符!如果您正在开发Web应用程序,则可以使用标准br标记。你想做什么?
答案 1 :(得分:0)
这是在黑暗中拍摄的,但net / http帖子的默认ContentType是“x-www-form-urlencoded”。尝试将标题中的ContentType设置为“text / plain”。请查看net/http docs以了解如何设置标题。
答案 2 :(得分:0)
答案稍晚,但我希望它有所帮助。
您的代码适用于ruby 2.5.0p0,因此错误可能是由ruby标准库引起的,并且同时得到修复。
我尝试使用本地sinatra服务器( item choice n cum
<fct> <int> <int> <int>
1 i1 1 2 2
2 i1 2 3 3
3 i1 3 1 1
4 i1 4 4 4
5 i2 1 3 3
6 i2 2 3 3
7 i2 3 2 2
8 i2 4 2 2
):
ruby simple-server.rb
您的代码(require 'sinatra'
post '/*' do
puts "I got #{params}"
end
):
ruby example.rb