perl发送SOAP请求

项目中的需要发送SOAP消息来进行一些操作。由于SOAP协议是构建在HTTP协议之上的,因此通过发送HTTP请求也可以解决此问题。

此外,项目中还需要考虑对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‘);

#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 $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的支持比较好,实现也简单。

时间: 2024-11-10 12:07:40

perl发送SOAP请求的相关文章

[转]C#通过Http发送Soap请求

/// <summary>        /// 发送SOAP请求,并返回响应xml        /// </summary>        /// <param name="url">请求地址</param>        /// <param name="datastr">SOAP请求信息</param>        /// <returns>返回响应信息</retur

Java发布webservice应用并发送SOAP请求调用

webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML的解析,代价是你不得不在你的框架中添加对于这些框架的依赖.个人观点是:服务端使用这些框架还行,如果做客户端,没必要使用这些框架,只需使用httpclient即可. 一.创建并发布一个简单的webservice应用 1.webservice 代码: import javax.jws.WebMethod

Jmete发送soap请求

1.新建线程组-添加SOAP/XML-RPC Request 2.我们以天气预报接口为例,http://ws.webxml.com.cn/WebServices/WeatherWS.asmx,选择最后一个:获取天气预报数据 3.SOAP/XML-RPC Request输入url和请求数据,注意Send SOAPAction如果不填,必须去掉勾选框 4.如果勾选需要输入SOAPAction内容 5.theCityCode输入城市名称或城市ID,theUserID默认参数"string"去

jmeter发送soap请求

以天气预报接口为例: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 1.通过SoapUI软件等软件将WSDL文档生成其相应Soap消息来设置 File---->new soapUI Project---->输入Project Name---->Initial WSDL/WADL:输入http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsd

java使用POST发送soap报文请求webservice返回500错误解析

本文使用JAX-WS2.2编译webservice,并使用HttpUrlConnection的POST方式对wsdl发送soap报文进行请求返回数据, 对错误Server returned HTTP response code: 500 的解决方法进行简单分析. 问题描述: 由于课程需要博主需要自己写一个webservice并且通过soap进行请求, 于是使用JAX-WS编译了下面java代码生成webservice服务 生成webservice的java代码: [java] view plai

Web Service之Soap请求响应内容中文编码解密

java模拟Soap请求测试Web Service接口,发现Web Service响应内容中的中文竟然是编码格式.比如: 中文:退保成功 Soap中文编码:退保成功 我仔细分析后发现,退编码实际上就是Unicode编码的Soap版,正规的Unicode编码是\u9000,Soap改成自己的格式&#x[4位内容];格式. 还有其他的比如: 换行,Soap编码: 单引号,Soap为转换为html编码:&apos; 与号,Soap为转换为html编码:& 小于号,Soap为转换为html

java soap api操作和发送soap消息

Java代码   package gov.hn12396.appintegration.mule.client; import gov.hn12396.appintegration.mule.util.EncoderUtil; import java.net.URL; import java.util.Calendar; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.s

Ajax发送post请求

//创建Ajax对象(兼容处理) function createXHR() { var xhr = null; if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if(window.ActiveXObject) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } return xhr; } //发送post请求 function request(){ xhr.open('P

每天一个linux命令13之curl发送http请求

一.get请求 curl "http://www.baidu.com"  如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i "http://www.baidu.com"  显示全部信息 curl -l "http://www.baidu.com" 只显示头部信息 curl -v "http://www.baidu.com" 显示get请求全过程解析 wget "http://www.ba