簡體   English   中英

在WCF SOAP消息中刪除其他名稱空間定義

[英]Removing additional namespace definition in WCF SOAP message

我有這個WSDL(服務不是我的): http//soaptest.webapi-beta.gratka.pl/dom.html?wsdl

當我使用WCF生成的代理時,請求soap消息中的方法標記獲得額外的命名空間定義,如:

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

當我使用PHP或wsdl.exe生成的代理時,這不會發生。

我想問一下,為什么WCF會這樣做,並且有可能改變這種行為(不在BeforeSendRequest中使用手工修改的消息)

下面我粘貼PHP和WCF生成的消息:

PHP一:

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

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

你有任何問題嗎? 就xml而言,兩者都是等價的。 PHP代碼在根元素處聲明命名空間( xmlns:ns1="http://soaptest.webapi-beta.gratka.pl/dom.html" ),而WCF在需要它的地方聲明 - 我相信這就是WSDL的實現 - 它似乎沒有任何錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM