Wie kann ich das ändern namespace-Präfix in dieser WSDL?

Ich versuche zum erstellen einer WSDL für einen bereits vorhandenen web-service. Ich habe eine vorhandene Clients und der vorhandenen server, und ich habe erobert das format sowohl mit Wireshark. Ich bin versucht zu schreiben, ein neuer client, der verwendet das gleiche format. Deshalb bin ich versucht, das format so nahe als möglich, sei es richtig oder nicht. Ich bin Kochen bis eine WSDL-Datei, mit Hilfe von XmlSPY, was ich hoffe, dann zu C# und generieren-Schnittstelle-code.

Hier ist meine WSDL so weit:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl" name="HelloService">
 <message name="api:create"/>
 <message name="oanda:create">
  <part name="parameter"/>
  <part name="parameter"/>
 </message>
 <portType name="Oanda_PortType">
  <operation name="create">
   <input message="tns:oanda:create"/>
   <output message="tns:api:create"/>
  </operation>
 </portType>
 <binding name="Oanda_binding" type="tns:Oanda_PortType">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="create">
   <soap:operation soapAction="sayHello"/>
   <input>
    <soap:body use="encoded"  namespace="oanda.fxtrade.api"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="oanda.fxtrade.api"/>
   </output>
  </operation>
 </binding>
 <service name="Oanda_service">
  <documentation>WSDL File for Oanda FX Trade API (local SOAP server)</documentation>
  <port name="Oanda_port" binding="tns:Oanda_binding">
   <soap:address location="http://10.0.0.3:18081"/>
  </port>
 </service>
</definitions>

Hier ist eine Beispiel-Nachricht, die ich versuche zu kopieren. Dies ist, was der ursprüngliche client strahlt:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header/>
  <SOAP-ENV:Body>
    <oanda:create xmlns:oanda="oanda.fxtrade.api">
      <parameter>FXGAME</parameter>
      <parameter></parameter>
    </oanda:create>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Hier ist, was XmlSPY sagt meine WSDL emittieren für die gleiche Botschaft:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <SOAP-ENV:Body>
      <m:create xmlns:m="oanda.fxtrade.api">
       <parameter/>
       <parameter/>
      </m:create>
     </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

Meine Frage ist jetzt - wie kann ich mit dem "oanda:" - Präfix erzeugt, die von der original-client? Ist das, was man eine namespace-Präfix? Wo ist der "m:" in meinem generierte code aus? Finde ich erwähnt bei anderen Beispielen auf dieser Website, aber keine mit WSDL, zumindest soweit ich das sagen kann.

Danke für jede Hilfe, die Sie geben können.


Wenn ich versuche, führen Sie das oben genannte WSDL durch svcutil.exe bekomme ich zwei Probleme.

1) das XML ist nicht wohlgeformt, da Sie nicht mehr als einen parameter mit dem gleichen Namen. XMLSpy war auch, sich darüber zu beschweren, also ich Stakte auf die es jetzt durch die Umbenennung zu Parameter1 und Parameter2.

Der genaue Fehler ist: "Mehr als ein message-Teil namens 'parameter' angegeben wurde. Jede Nachricht muss einen eindeutigen Namen haben."

2) Mal vorbei, bekomme ich diese Fehlermeldung:

"Namespace-Präfix 'tns:oanda' ist nicht definiert."

Also nochmal: Wie kann ich das ändern/hinzufügen von namespace-definition im WSDL-Datei?

InformationsquelleAutor Stewart Loving-Gibbard | 2009-12-22

Schreibe einen Kommentar