0

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

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

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

4

1 回答 1

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 命名空间和消息格式。这就是为什么您的问题中应该出现相关代码的原因,但您需要像这样实例化您的SoapClient代码:

$client = new SoapClient("some.wsdl", array('soap_version' => SOAP_1_2));
于 2013-07-17T13:42:39.697 回答