我被告知我的肥皂头必须是这样的:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://ws.dgpys.deloitte.com">
<soap:Header>
<axis2:ServiceGroupId xmlns:axis2="http://ws.apache.org/namespaces/axis2">
urn:uuid:FA7EB13C84D91BC34B1373986557015
</axis2:ServiceGroupId>
</soap:Header>
<soap:Body>
...
</soap:Body>
我的肥皂标题是:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"http://ws.dgpys.deloitte.com\">
<SOAP-ENV:Header>
<ns1:ServiceGroupId>
urn:uuid:FA7EB13C84D91BC34B1373986557015
</ns1:ServiceGroupId>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
我没有工作。我搜索了一个解决方案,但我找不到任何东西。我怎样才能解决这个问题?或者我应该学习哪些主题?
答案 0 :(得分:1)
不,您的http://schemas.xmlsoap.org/soap/envelope/
为SOAP 1.1,请求的是http://www.w3.org/2003/05/soap-envelope/
SOAP 1.2命名空间。
不要对soap
/ SOAP-ENV
或axis
/ ns1
感到困惑,它们只是名称空间前缀。
此外,您的第一条消息似乎缺少axis2
命名空间前缀的声明,但我认为xmlns:ws="http://ws.dgpys.deloitte.com"
意在阅读xmlns:axis2="http://ws.dgpys.deloitte.com"
。
如果提供程序要求您发送SOAP 1.2,则使用SOAP 1.2命名空间和消息格式。这就是您的问题中应该包含相关代码的原因,但您需要instantiate your SoapClient
like this:
$client = new SoapClient("some.wsdl", array('soap_version' => SOAP_1_2));