查询

SoapClient::__call()函数—用法及示例

「 调用 SOAP 服务中不存在的方法 」


SoapClient::__call() 方法是一个魔术方法,用于调用 SOAP 服务中不存在的方法。它允许您在不事先声明方法的情况下调用 SOAP 服务的任何方法。

用法:

public mixed SoapClient::__call ( string $function_name , array $arguments )

参数:

  • function_name:要调用的 SOAP 方法的名称。
  • arguments:一个包含要传递给 SOAP 方法的参数的数组。

返回值:

  • 如果调用成功,则返回 SOAP 方法的返回值。
  • 如果调用失败,则抛出一个 SoapFault 异常。

示例:

$wsdl = 'http://example.com/soap.wsdl';
$options = [
    'trace' => true,
    'exceptions' => true,
];

// 创建一个 SoapClient 实例
$client = new SoapClient($wsdl, $options);

// 调用不存在的 SOAP 方法
$response = $client->__call('nonExistentMethod', ['param1', 'param2']);

// 打印 SOAP 请求和响应
echo "Request:\n" . $client->__getLastRequest() . "\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";

// 处理 SOAP 方法的返回值
var_dump($response);

在上面的示例中,我们创建了一个 SoapClient 实例,并使用__call()方法调用了一个不存在的 SOAP 方法nonExistentMethod。然后,我们打印了 SOAP 请求和响应,以及处理了 SOAP 方法的返回值。

请注意,__call() 方法并不会验证所调用的方法是否存在于 WSDL 文件中。因此,在调用不存在的方法时,可能会出现错误。建议在调用之前,先检查 WSDL 文件中是否存在该方法。

补充纠错
热门PHP函数
分享链接