我正在尝试将 WSDL Web 服务与 php/soap 一起使用。而且它总是给出一个反序列化错误,这正是:
反序列化操作“测试”的请求消息正文时出错。OperationFormatter 遇到无效的消息正文。预计会找到名称为“Test”和命名空间“”的节点类型“Element”。找到名称为“参数”和“命名空间”的节点类型“元素”
当我使用 WcfTestClient 软件测试 WSDL 源时,没有任何问题,它会返回所需的结果。
当我比较由 SOAP 创建的请求 XML 和由 WcfTestClient 软件创建的 XML 时,我发现差异可能是问题所在。名称空间和前缀似乎有问题,但我不知道如何解决它,或者可能是其他原因导致了问题。
请求 XML 是这样的:http: //pastebin.com/eysnG89F。
如果您需要 PHP 代码,这是我正在使用的代码。
try{
$soap_options = array(
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_NONE,
'trace' => TRUE
);
$soap = new SoapClient(
'http://url.to/web/service.svc?wsdl', $soap_options
);
$a = $soap->Test(
array("login" =>
array(
"FirmaId" => 15,
"KullaniciAdi" => "Asdf",
"Parola" => "Xyxy",
)
)
);
var_dump($a);
} catch (Exception $e) {
var_dump($e);
}