如何忽略或检查 PHP 中的“SOAP-ERROR: Encoding: Violation of encoding rules”

wut*_*aer 5 php soap

嗨,我在我的 php 应用程序中进行了一个肥皂调用

$options = array(
    'soap_version' => SOAP_1_1,
    'exceptions' => true,
    'trace' => 1,
    'cache_wsdl' => WSDL_CACHE_NONE,
    'local_cert' => 'my.key',
);
$client = new SoapClient('http://domain.com/my.wsdl', $options);
var_dump($client->functionName($args));
Run Code Online (Sandbox Code Playgroud)

这导致异常

SOAP-ERROR: Encoding: Violation of encoding rules
Run Code Online (Sandbox Code Playgroud)

我想问题是服务器响应,因为

$client->__getLastResponse()
Run Code Online (Sandbox Code Playgroud)

包含一个好看的服务器响应,根据其他问题可能存在值类型不匹配。

是否可以找出导致此错误的值,或者是否可以禁用此检查?

小智 2

您可能是对的,问题出在服务器响应中,我遇到了类似的问题,返回的 XML 格式良好并且看起来不错,但它没有通过架构验证。

我不知道如何在 PHP 中调试它,我也想知道如何忽略此验证(和错误抛出),但这个答案帮助我找到了响应中的问题:https://stackoverflow.com/a/ 12171635/3999906