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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Namespace-Präfix spielt keine Rolle. Die beiden Beispiele sind identisch nach den Regeln von XML.
InformationsquelleAutor John Saunders
Namespace-Präfixe sind genau wie Variablen Namen. Sie können die namespace-alias mit dem, was Sie wollen.
Dies ist Analog zu dem folgenden java-code:
In der ersten XML-api.fxtrade.onada onada;
In der zweiten XML-api.fxtrade.onada m;
In anderen Worten, der 1. XML gelesen werden können:
in Bezug auf die "
oanda.fxtrade.api
" - Namensraum mit Variablenonada
, diecreate
tag in deronada
namespace, wird ein parameter-Wert FXGAME.Das zweite XML-kann gelesen werden als:
in Bezug auf die "
oanda.fxtrade.api
" - Namensraum mit Variablenm
, diecreate
tag in derm
namespace, wird ein parameter...InformationsquelleAutor CMR