2011-06-01 68 views
0

这是我的代码:红宝石 - 问题与HTTP邮政

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

谢谢!

+0

它在PHP中工作? – Fredefl 2011-06-01 19:21:07

+0

是的,它的工作原理... – Brian 2011-06-01 19:27:29

+0

我看到有人提出这个建议:https://github.com/jnunemaker/httparty – Fredefl 2011-06-01 19:34:41

回答

0

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

+0

嗯,我正在将一个PHP类转换为Ruby,将使用代码编辑该问题 – Brian 2011-06-01 19:14:16

0

这是在黑暗中拍摄的,但net/http文章的默认ContentType为“x-www-form-urlencoded”。尝试将标题中的ContentType设置为“text/plain”。请查看net/http docs了解如何设置标题。

+0

谢谢,但它没有工作,同样的错误... – Brian 2011-06-01 20:24:57