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

来源:互联网 发布:淘宝店长和运营的区别 编辑:程序博客网 时间:2024/05/29 12:31

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

  • 黄远威

    1 票

  • 黄远威
    366

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

评论 (0) • 分享 • 链接 • 2012-08-24 
3个答案
票 数 
  • 张洪保

    2 票

  • 张洪保
    12.63K
  • 最佳答案

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
  • 浪际天涯

    2 票

  • 浪际天涯
    13.23K

通过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
  • Liper

    1 票

  • Liper
    11

以下为我们最近接口的一个例子,这个例子的特点是应用了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. ?>
0 0
原创粉丝点击