首页 > 代码库 > perl发送SOAP请求
perl发送SOAP请求
项目中的需要发送SOAP消息来进行一些操作。由于SOAP协议是构建在HTTP协议之上的,因此通过发送HTTP请求也可以解决此问题。
use LWP::UserAgent;
此外,项目中还需要考虑对SSL协议的支持。
方法一:利用SOAP::Lite(perl的第三方库)来实现
use SOAP::Lite;
my $proxy=‘http://host:port/.../...?wsdl‘;
my $soap=SOAP::Lite->proxy($proxy)->ns(‘...‘);
my $response=$soap->call(‘...‘);
由于不想引入第三方的库,后面就没有使用此方式。
方法二:利用LWP来实现
use HTTP::Headers;
use HTTP::Request;use LWP::UserAgent;
my $server = ‘...‘;
#get soap request format
my $content = ‘...‘ ;
#set http header
my $head=HTTP::Headers->new();
$head->content_type(‘text/xml;charset=UTF-8‘);
my $head=HTTP::Headers->new();
$head->content_type(‘text/xml;charset=UTF-8‘);
#set http request and send it
my $request = HTTP::Request->new(POST,$server, $head );
$request->protocol(‘HTTP/1.0‘);
$request->content($content);
my $userAgent = LWP::UserAgent->new();
my $request = HTTP::Request->new(POST,$server, $head );
$request->protocol(‘HTTP/1.0‘);
$request->content($content);
my $userAgent = LWP::UserAgent->new();
my $response = $userAgent ->request($request);
由于LWP是perl自带的库,不存在使用第三方库的问题。但如果要支持SSL协议的,还是需要引入IO::Socket::SSL,Net::SSL等第三方库
方法三:利用curl命令来实现
my $httpUrl = $ARGV[0];
my $result = "";
my $content = ‘...‘ ;
if($httpUrl =~ /^https/){
my $certDir = $ARGV[1];
$result = `curl -k --silent --cacert $certDir/***.pem --cert $certDir/***.pem ‘$httpUrl‘ -d ‘$content‘`;
}else{
$result = `curl --silent ‘$httpUrl‘ -d ‘$content‘`;
}
此种方法依赖于curl命令,带对SSL的支持比较好,实现也简单。
perl发送SOAP请求
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。