使用PHP如何获取WSDL中定义的方法列表

使用PHP如何获取WSDL中定义的方法列表

我应用的场景是,从WSDL中读取定义好的所有方法的方法名,再将这些方法名形成一个列表在前端供用户选择来调用,不知道PHP有没有什么库是可以做到的?

评论 (0) •   •  链接 •  2012-08-24 
3个答案

php有内置的函数__getFunctions ():


        
        
  1. <?php
  2. $client  = new  SoapClient ( './myfile.wsdl' );
  3. var_dump ( $client -> __getFunctions ());
  4. ?>

SoapClient::__getFunctions

评论 (3) •  链接 • 2012-08-25
  • 0
    0 => string 'UNKNOWN getOrderList()' (length=22)
    1 => string 'UNKNOWN addOrder(UNKNOWN $data, string $t)' (length=42)
    2 => string 'UNKNOWN delOrder(UNKNOWN $data)' (length=31)
    返回的结果节选如上,我觉得上面这些字符串还是挺难处理,因为目前我只需要那个方法名就OK了,是不是应该写个正则来匹配?
     –  黄远威  2012-08-27
  • 0
    我也遇到过这情况,参数类型是UNKNOWN,不知道如何解决 –  eink  2012-10-19
  • 0
    但是在PHP5.3不会出现这情况 –  eink  2012-10-19

通过PHP的反射机制应该也是可以的,我这里写了一个例子,不过由于没有wsdl文件,所以没有测试,思路应该就是这样,你拿去改改应该没有问题


        
        
  1. <?php
  2. $soap  = @new  SoapClient ('x.wsdl');
  3. $reflector = new ReflectionObject($soap);
  4. $functions = $reflector->getMethods(ReflectionMethod::IS_PUBLIC||ReflectionMethod::isProtected||ReflectionMethod::isProtected) as $method
  5. var_dump($functions);
评论 (0) •  链接 • 2012-08-25

以下为我们最近接口的一个例子,这个例子的特点是应用了WSDL中的Header安全参数:


        
        
  1. <?php
  2. $soapClient = new SoapClient("http://*****.wsdl",array('encoding' => 'UTF-8'));
  3.         $sh_param = array(
  4.                 'Username'    =>    '***',
  5.                 'Password'    =>    '***');
  6.         $headers = new SoapHeader('http://soapserver.example.com/webservices', 'UserCredentials', $sh_param);
  7.        
  8.         // Prepare Soap Client
  9.         $soapClient->__setSoapHeaders(array($headers));
  10.         $body_param = array(
  11.                 'ID'  =>    '***',
  12.                 'AAID'    =>    '0',
  13.         );
  14.         $result = $soapClient->FUNCTIONS($body_param);
  15.    
  16.         print_r($result);
  17.         exit;
  18. ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值