Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在web浏览器中作为HTTP POST请求(而不仅仅是GET)打开URL的脚本_Linux_Windows_Macos_Http_Shell - Fatal编程技术网

Linux 在web浏览器中作为HTTP POST请求(而不仅仅是GET)打开URL的脚本

Linux 在web浏览器中作为HTTP POST请求(而不仅仅是GET)打开URL的脚本,linux,windows,macos,http,shell,Linux,Windows,Macos,Http,Shell,如何从命令行脚本中打开URL作为URL的POST请求?我想在Linux、Windows和MacOS上实现这一点,所以这是一种跨平台的实现方式 对于其中的每一项,我都可以使用以下命令打开对URL的GET请求: xdg open[url]-Linux 启动[url]-Windows 打开[url]-MacOS 。。。但是我看不到一种做POST请求的方法。可能吗?如果可能,如何实现 此外,展示如何在请求中添加帖子正文也将不胜感激。仅供参考,我正在编写的脚本是用Ruby编写的,所以任何内置到操作系统

如何从命令行脚本中打开URL作为URL的POST请求?我想在Linux、Windows和MacOS上实现这一点,所以这是一种跨平台的实现方式

对于其中的每一项,我都可以使用以下命令打开对URL的GET请求:

  • xdg open[url]
    -Linux
  • 启动[url]
    -Windows
  • 打开[url]
    -MacOS
。。。但是我看不到一种做POST请求的方法。可能吗?如果可能,如何实现

此外,展示如何在请求中添加帖子正文也将不胜感激。仅供参考,我正在编写的脚本是用Ruby编写的,所以任何内置到操作系统或使用Ruby的东西都可以

更新:
为了澄清这一点,我希望在默认浏览器中打开它,而不仅仅是发出POST请求并获得结果。

如果您使用的是ruby,则可以使用
NET::HTTP
库:


很抱歉,没有可靠的方法跨浏览器和跨操作系统执行此操作。当我们在IE8中构建加速器时,IE团队花了很多时间研究这个话题


最接近的方法是将HTML页面写入具有自动提交表单(或XmlHttpRequest)的磁盘,然后调用浏览器加载将提交表单的页面。这将您的代码限制为仅提交从浏览器提交的合法表单(例如,仅提交可能的内容类型等)。

我不知道我的解决方案跨浏览器和平台的兼容性如何

但不是使用@EricLaw所述的临时文件,
您可以使用数据URL中的自动提交表单对该html进行编码,就像我在这里所做的那样:


谢谢,但我希望它能在web浏览器中打开,而不仅仅是发出请求。我已经更新了问题描述来澄清这一点。是的,我认为这可能是不可能的。谢谢你。如果其他人想尝试类似的方法,我使用的方法是通过ruby向服务器发送帖子,返回一个过期的唯一id,然后发布一个关于该唯一id的GET。虽然没有直接帖子那么优雅,但应该足够了。
require 'net/http'
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
puts res.body