8

PHP と SOAP に関する多くの質問があります。しかし、私は自分の状況について答えが見つかりません。

そう。これには PHP SoapClient と WSDL を使用します。オブジェクトはこれを送信します:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.site.com"><SOAP-ENV:Body>

しかし、私はこれが必要です:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>

質問。標準の PHP クラス SoapClient でこれを行うにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

5

php.netで回答を検索します

<?php
class MSSoapClient extends SoapClient {

    function __doRequest($request, $location, $action, $version) {
        $namespace = "http://tempuri.com";

        $request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$namespace.'"', $request, 1);
        $request = preg_replace('/<ns1:(\w+)/', '<$1', $request);
        $request = str_replace(array('/ns1:', 'xmlns:ns1="'.$namespace.'"'), array('/', ''), $request);

        // parent call
        return parent::__doRequest($request, $location, $action, $version);
    }
}

$client = new MSSoapClient(...);
?>

このコードは、リクエストでエンベロープを変更します。そしてASPSOAPサーバーの必要性。

于 2010-03-20T13:16:54.103 に答える