Laden...

SOAP API - WSDL wie verwenden?

Letzter Beitrag vor 12 Jahren 6 Posts 2.416 Views
SOAP API - WSDL wie verwenden?

Hallo,

ich möchte eine SOAP Schnittstelle in meinem C# Programm verwenden. Normalerweise ging das ganze recht bequem indem man einen Dienstverweis anlegen und auf die WSDL schauen lassen konnte.

Die aktuelle API (Textbroker) stellt leider keine WSDL zur verfügung. Dann habe ich herausgefunden das man diese einfach per Visual Studio und dem Tool xsd.exe aus einer XML Generieren kann. Das hat das Tool auch soweit gemacht.

Wenn ich jetzt einen Dienstverweis anlege und auf die Lokale XSD einstelle zeigt er mit im Debugfenster allerdings

Fehler 264 Fehler in benutzerdefiniertem Tool: Fehler beim Generieren von Code für den Dienstverweis "ServiceReference1". Weitere Einzelheiten finden Sie in den anderen Fehler- und Warnmeldungen.

an. Es gibt aber keine weiteren Fehler oder Warnmeldungen?

Wo genau liegt der Fehler? Ich würde mich freuen wenn jemand einen Tipp hat?

Falls es Hilft, hier die generierte XSD:


<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Envelope" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mstns="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:app1="https://api.textbroker.de/Budget/">
  <xs:import namespace="https://api.textbroker.de/Budget/" schemaLocation="login_xml_app1.xsd" />
  <xs:element name="Envelope" msdata:IsDataSet="true" msdata:Locale="en-US" msdata:Prefix="SOAP-ENV">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Body" msdata:Prefix="SOAP-ENV">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="app1:doLogin" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Und hier eine Beispiel XML:


<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://api.textbroker.de/Budget/" 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:Body>
		<ns1:doLogin>
			<param0 xsi:type="xsd:int">123</param0>
			<param1 xsi:type="xsd:string">token</param1>
			<param2 xsi:type="xsd:string">budgetkey</param2>
		</ns1:doLogin>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Vielleicht hilft das PDF hier weiter.

Gruß

Hi,

das PDF kenne ich schon, allerdings steht dort ja auch nochmal drin das es keine WSDL gibt, weshalb ich ja versuche diese selbst aus funktionierenden XML Beispielen zu generieren.

dann musste versuchen mit dem SOAP Client das abzubilden was als PHP - Code vorgegeben ist. Bisle Fummelarbeit aber sollte eigentlich funzen.

Gruß

Erstmal vielen dank für die schnelle Hilfe,

ja ich habe mir schonmal vor einiger Zeit zum Testen schnell etwas per HTTPwebRequest gebaut um die XML zu senden und die Antwort via RegEx geparsed, was natürlich nicht produktiv genutzt werden kann.

Werde das ganze Dann nochmal mittels der XML Klasse neu bauen. Ich dachte halt das es mittels XSD Files einfacher und bequemer geht, schade.

Du kannst dir vielleicht mal SOAP-UI anschauen. Das hilft ggf. bei diesem Fummelaufgaben. Ansonsten ist es erstmal unverständlich einen SOAP-WS ohne WSDL anzubieten...