非常奇怪的SoapClient问题

时间:2011-08-04 09:20:50

标签: php soap soap-client

 try
  {
    $client = new \SoapClient($wsdlUrl, array(
      'cache_wsdl' => 0, 'exceptions' => true, 'trace' => true));

    $client->getPage($parameter);
  }
  catch(\Exception $e)
  {
    die("exception");
  }

好的,这就是执行SOAP请求的原因。 $ wsdlUrl保存WSDLs URL,$参数保存XML文档。

一切都像魅力一样!

现在我只是在$ parameter中为XML文档添加了更多节点,我发现了一个致命的错误。

这不是必须如此奇怪,但所需要的是以下三个观察结果的组合:

1)将异常设置为true ....但是没有抛出异常/ 这是b / c我忘了在catch语句中的Exception之前放置一个反斜杠

2)而是记录错误:

PHP Fatal error:  SoapClient::SoapClient(): 
'uri' option is required in nonWSDL mode in /var/w[...]

3)但提供了WSDL网址,当然也是有效的,因为在跳过添加新节点后再次正常工作。它们不会影响wsdl参数。

1 个答案:

答案 0 :(得分:1)

好的,我找到了问题的根源。这个问题没有令人满意的答案,但很少有东西要学! :)

重要的是请求已由SOAP服务器发送和处理。 但服务器响应错误。

所以,显然,即使触发了没有wsdl和没有连接参数的致命错误并不意味着没有发送请求 - 这在我看来是非常合乎逻辑的b / c如果没有提供wsdl也没有连接参数,那么请求如何执行?

修改

代码中还有另一个错误。我忘了在Exception之前放一个反斜杠!没有它就没有引用Exception类。

然后抛出并捕获异常。