使用PHP如何获取WSDL中定义的方法列表
我应用的场景是,从WSDL中读取定义好的所有方法的方法名,再将这些方法名形成一个列表在前端供用户选择来调用,不知道PHP有没有什么库是可以做到的?
php有内置的函数__getFunctions ():
<?php
$client = new SoapClient ( './myfile.wsdl' );
var_dump ( $client -> __getFunctions ());
?>
评论 (3) • 链接
- 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文件,所以没有测试,思路应该就是这样,你拿去改改应该没有问题
<?php
$soap = @new SoapClient ('x.wsdl');
$reflector = new ReflectionObject($soap);
$functions = $reflector->getMethods(ReflectionMethod::IS_PUBLIC||ReflectionMethod::isProtected||ReflectionMethod::isProtected) as $method
var_dump($functions);
评论 (0) • 链接
- Liper1 票
- 11
以下为我们最近接口的一个例子,这个例子的特点是应用了WSDL中的Header安全参数:
<?php
$soapClient = new SoapClient("http://*****.wsdl",array('encoding' => 'UTF-8'));
$sh_param = array(
'Username' => '***',
'Password' => '***');
$headers = new SoapHeader('http://soapserver.example.com/webservices', 'UserCredentials', $sh_param);
// Prepare Soap Client
$soapClient->__setSoapHeaders(array($headers));
$body_param = array(
'ID' => '***',
'AAID' => '0',
);
$result = $soapClient->FUNCTIONS($body_param);
print_r($result);
exit;
?>