0

私はこの WSDL を持っています (サービスは私のものではありません): http://soaptest.webapi-beta.gratka.pl/dom.html?wsdl

WCF で生成されたプロキシを使用すると、リクエスト SOAP メッセージのメソッド タグは次のような追加の名前空間定義を取得します。

<q1:zaloguj xmlns:q1="http://soaptest.webapi-beta.gratka.pl/dom.html">

wsdl.exe によって生成された PHP またはプロキシを使用すると、これは起こりません。

なぜWCFがそうするのか、そしてこの動作を変更する可能性はありますか(BeforeSendRequestで手作りのメッセージ変更を使用せずに)

以下に、PHP と WCF によって生成されたメッセージを貼り付けます。

PHP 1:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soaptest.webapi-beta.gratka.pl/dom.html" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <ns1:zaloguj>
            <login xsi:type="xsd:string">login</login>
            <haslo xsi:type="xsd:string">password</haslo>
            <klucz_webapi xsi:type="xsd:string">key</klucz_webapi>
            <id_kategoria xsi:type="xsd:int">382a</id_kategoria>
            <wersja_webapi xsi:type="xsd:int">2</wersja_webapi>
        </ns1:zaloguj>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

WCF 1:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <q1:zaloguj xmlns:q1="http://soaptest.webapi-beta.gratka.pl/dom.html">
            <login xsi:type="xsd:string">login</login>
            <haslo xsi:type="xsd:string">password</haslo>
            <klucz_webapi xsi:type="xsd:string">key</klucz_webapi>
            <id_kategoria xsi:type="xsd:int">382</id_kategoria>
            <wersja_webapi xsi:type="xsd:int">2</wersja_webapi>
        </q1:zaloguj>
    </s:Body>
</s:Envelope> 
4

1 に答える 1

2

何か問題に直面していますか?xml に関する限り、どちらも同等です。PHP コードはxmlns:ns1="http://soaptest.webapi-beta.gratka.pl/dom.html"ルート要素で名前空間 ( ) を宣言していますが、WCF はそれが必要な場所で宣言しています (これが WSDL の実装であると私は信じています)。

于 2013-01-10T09:56:15.027 に答える