服务端代码(不需要web服务器,直接运行即可)
- use SOAP::Transport::HTTP;
-
- #提供给客户端调用的函数
- sub runBiz()
- {
- my ($a,$packageName,$bizDataXML) = (@_);
-
print "receive[$packageName,$bizDataXML]";
- # 返回给客户端的值
-
return SOAP::Data->name(result => "soap server receive[$packageName,$bizDataXML]");
- }
- #启动服务端
- my $daemon = SOAP::Transport::HTTP::Daemon
-
-> new (LocalAddr => 'localhost',LocalPort => 9080)
-
# 把函数加载到服务里 dispatch_to('/Your/Path/To/Deployed/Modules', 'Module::Name', 'Module::method')
- #dispatch_to(
-
# 'PATH/', # dynamic: load anything from there, any module, any method
-
# 'MODULE', # static: any method from this module
-
# 'MODULE::method', # static: specified method from this module
-
# 'method', # static: specified method from main::
- # );
-
-> dispatch_to("runBiz")
- ;
-
print "Contact to SOAP server at ", $daemon->url, "\n";
- # 启动监听
- $daemon->handle;
客户端代码:
- use SOAP::Lite;
-
my $bizDataXML='<?xml version="1.0" encoding="GB2312"?>
- <root>
- <data>
- <WGINFOR>XXXXXXXX</WGINFOR>
-
<TIME>2010-09-19 18:17:20</TIME>
- ';
-
- $soap_client = SOAP::Lite
-
# -> uri('runBiz')
-
-> proxy("http://localhost:9080/");
-
- #设置用户名密码
- #eval { $soap_client->transport->http_request->header
- #(
-
# 'Authorization' =>
-
# 'Basic ' . MIME::Base64::encode("$sUID:$sPWD", '')
- #); };
-
- $soap_response = $soap_client->runBiz
- (
-
SOAP::Data->name(packageName=>"ISS_KM"), #参数1
-
SOAP::Data->name(bizDataXML => $bizDataXML) #参数2
- );
- #打印返回值
-
print $soap_response->result,"\n";
测试环境:winXP perl v5.6.1 built for MSWin32-x86-multi-thread,测试结果:
end
本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/608493,如需转载请自行联系原作者