加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在perl中通过文件套接字使用http web服务器?

发布时间:2020-12-16 06:16:04 所属栏目:大数据 来源:网络整理
导读:使用 linux命令可以使用文件套接字中的Web服务器: # /bin/echo -e "GET /containers/json?all=1 HTTP/1.0rn" | nc -U /var/run/docker.sock ; echo ''HTTP/1.0 200 OKContent-Type: application/jsonDate: Sun,03 Jan 2016 23:31:54 GMTContent-Length: 2
使用 linux命令可以使用文件套接字中的Web服务器:

# /bin/echo -e "GET /containers/json?all=1 HTTP/1.0rn" | nc -U /var/run/docker.sock ; echo ''
HTTP/1.0 200 OK
Content-Type: application/json
Date: Sun,03 Jan 2016 23:31:54 GMT
Content-Length: 2

[]
#

如何使用Perl模块执行相同的操作?我更喜欢用HTTP::Tiny做同样的事情,但我无法弄清楚如何将它与文件套接字一起使用.

现在我只是使用perl system()但我想使用HTTP :: Tiny来使代码更简单.

解决方法

我找不到让HTTP :: Tiny使用UNIX套接字的方法,但我确实找到了使LWP工作的方法:

use strict;
use warnings;
use LWP::UserAgent;
use LWP::Protocol::http::SocketUnixAlt;

my $socket = "/var/run/docker.sock";
my $geturi = "/containers/json?all=1"; #GET

LWP::Protocol::implementor( http => 'LWP::Protocol::http::SocketUnixAlt' );

my $ua = LWP::UserAgent->new();
my $res = $ua->get("http:/var/run/docker.sock/"."$geturi");
print $res->content;

如果您认为手动执行HTTP请求太麻烦并且想要另一个抽象层,那么还有a couple of docker modules in CPAN.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读