这是我的代码:
   @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,错误不会发生,但我确实需要它。
我使用的是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();谢谢!
发布于 2011-06-02 03:12:07
您不能在Http Post中使用换行符!如果您正在开发web应用程序,则可以使用标准的br标记。你想做什么?
发布于 2011-06-02 04:10:30
这是在黑暗中拍摄,但net/http post的默认ContentType是"x-www-form-urlencoded“。尝试将标题中的ContentType设置为“文本/纯文本”。请看一下net/http docs,了解如何设置头部。
发布于 2018-04-24 22:54:40
回答稍微晚了一点,但我希望它能有所帮助。
您的代码可以与ruby 2.5.0p0一起工作,所以这个错误可能是由ruby标准库引起的,并在此期间得到了修复。
我尝试使用本地sinatra服务器(ruby simple-server.rb):
require 'sinatra'
post '/*' do
  puts "I got #{params}"
end和你的代码(ruby example.rb):
require 'uri'
require 'net/http'
my_url = "http://localhost:4567/"
@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)https://stackoverflow.com/questions/6206318
复制相似问题