首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby - HTTP Post的问题

Ruby - HTTP Post的问题
EN

Stack Overflow用户
提问于 2011-06-02 03:02:50
回答 3查看 399关注 0票数 0

这是我的代码:

代码语言:javascript
运行
复制
   @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代码:

代码语言:javascript
运行
复制
$req = 'somedata\r\nsomadata\r\nsomadata\r\n';
$r = new HttpRequest($url, HttpRequest::METH_POST);
$r->addRawPostData($req);
$resp = $r->send()->getBody();

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2011-06-02 03:12:07

您不能在Http Post中使用换行符!如果您正在开发web应用程序,则可以使用标准的br标记。你想做什么?

票数 0
EN

Stack Overflow用户

发布于 2011-06-02 04:10:30

这是在黑暗中拍摄,但net/http post的默认ContentType是"x-www-form-urlencoded“。尝试将标题中的ContentType设置为“文本/纯文本”。请看一下net/http docs,了解如何设置头部。

票数 0
EN

Stack Overflow用户

发布于 2018-04-24 22:54:40

回答稍微晚了一点,但我希望它能有所帮助。

您的代码可以与ruby 2.5.0p0一起工作,所以这个错误可能是由ruby标准库引起的,并在此期间得到了修复。

我尝试使用本地sinatra服务器(ruby simple-server.rb):

代码语言:javascript
运行
复制
require 'sinatra'

post '/*' do
  puts "I got #{params}"
end

和你的代码(ruby example.rb):

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6206318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档