最简单的SOAP服务端和客户端代码(不需要web服务器)

服务端代码(不需要web服务器,直接运行即可)

 


  1. use SOAP::Transport::HTTP;  
  2.  
  3. #提供给客户端调用的函数  
  4. sub runBiz()  
  5. {  
  6.   my ($a,$packageName,$bizDataXML) = (@_);  
  7.   print "receive[$packageName,$bizDataXML]";  
  8. # 返回给客户端的值  
  9.   return SOAP::Data->name(result => "soap server receive[$packageName,$bizDataXML]");  
  10. }  
  11. #启动服务端  
  12. my $daemon = SOAP::Transport::HTTP::Daemon  
  13.     -> new (LocalAddr => 'localhost',LocalPort => 9080)   
  14. # 把函数加载到服务里 dispatch_to('/Your/Path/To/Deployed/Modules''Module::Name''Module::method')  
  15. #dispatch_to(   
  16. 'PATH/', # dynamicload anything from there, any module, any method  
  17. 'MODULE', # staticany method from this module   
  18. 'MODULE::method', # static: specified method from this module  
  19. 'method', # static: specified method from main::   
  20. # );  
  21.     -> dispatch_to("runBiz")   
  22.   ;  
  23.   print "Contact to SOAP server at ", $daemon->url, "\n";  
  24. # 启动监听  
  25.   $daemon->handle; 

客户端代码:

 


  1. use SOAP::Lite;  
  2. my $bizDataXML='<?xml version="1.0" encoding="GB2312"?>  
  3. <root>  
  4.         <data>  
  5.                 <WGINFOR>XXXXXXXX</WGINFOR>  
  6.                 <TIME>2010-09-19 18:17:20</TIME>  
  7. ';  
  8.  
  9. $soap_client = SOAP::Lite  
  10. # -> uri('runBiz')  
  11.   -> proxy("http://localhost:9080/");   
  12.       
  13. #设置用户名密码   
  14. #eval { $soap_client->transport->http_request->header  
  15. #(  
  16. 'Authorization' =>   
  17. 'Basic ' . MIME::Base64::encode("$sUID:$sPWD"'')  
  18. #); };  
  19.  
  20. $soap_response = $soap_client->runBiz  
  21. (  
  22.               SOAP::Data->name(packageName=>"ISS_KM"), #参数1  
  23.         SOAP::Data->name(bizDataXML => $bizDataXML) #参数2  
  24. );  
  25. #打印返回值  
  26. print $soap_response->result,"\n"

测试环境:winXP perl v5.6.1 built for MSWin32-x86-multi-thread,测试结果:

 

最简单的SOAP服务端和客户端代码(不需要web服务器) 最简单的SOAP服务端和客户端代码(不需要web服务器)

end







     本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/608493,如需转载请自行联系原作者


上一篇:pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下


下一篇:MacOSX apache 无法访问服务器