我必须在我网站上的某个控制器中拨打其他网址。问题是,对于所有参数,其他站点要求我溢出网址。无论如何从控制器调用另一个URL并使用POST发送所有参数?
我不期待其他网站的回复。另外,我认为有一种方法可以使用Net :: HTTP库来实现这一点,我想我不知道如何。
由于
答案 0 :(得分:4)
您无法在HTTP规范中同时执行重定向和发送POST数据。重定向通过发送简单的Location: otherlocation.html
标头来实现。 POST数据不适合该系统的任何位置。
您是否希望用户转到此页面,或者您是否只想将数据发送到应用程序?如果要发送数据而不是将用户发送到那里,请使用Ruby的Net :: HTTP模块。如果要发送用户,可能会强制您输出带有表单的视图,并使用Javascript自动提交。 (不要忘记通过在noscript
标签中提供提交按钮来优雅地降级。)
答案 1 :(得分:2)
这来自ruby docs:
require 'net/http'
require 'uri'
result = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'),
{'q'=>'ruby', 'max'=>'50'})
正如你所看到的,你将params作为一个方便的哈希传递,不像其他语言让你弄乱了http格式。
答案 2 :(得分:2)