这2个肥皂头是否相同?

时间:2013-07-17 13:40:37

标签: php soap soapheader

我被告知我的肥皂头必须是这样的:

<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>

我没有工作。我搜索了一个解决方案,但我找不到任何东西。我怎样才能解决这个问题?或者我应该学习哪些主题?

1 个答案:

答案 0 :(得分:1)

不,您的http://schemas.xmlsoap.org/soap/envelope/SOAP 1.1,请求的是http://www.w3.org/2003/05/soap-envelope/ SOAP 1.2命名空间。

不要对soap / SOAP-ENVaxis / 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));