Ruby - HTTP Post的问题

时间:2011-06-01 19:02:50

标签: ruby http post http-post

这是我的代码:

   @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();

谢谢!

3 个答案:

答案 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