0

SOAP ヘッダーは次のようにする必要があると言われました。

<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-ENVまたはaxis/で混乱しないでください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 に答える