Laden...

SOAP API - WSDL wie verwenden?

Erstellt von scub vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.396 Views
S
scub Themenstarter:in
20 Beiträge seit 2011
vor 12 Jahren
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>

E
180 Beiträge seit 2010
vor 12 Jahren

Vielleicht hilft das PDF hier weiter.

Gruß

S
scub Themenstarter:in
20 Beiträge seit 2011
vor 12 Jahren

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.

E
180 Beiträge seit 2010
vor 12 Jahren

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

Gruß

S
scub Themenstarter:in
20 Beiträge seit 2011
vor 12 Jahren

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.

I
302 Beiträge seit 2008
vor 12 Jahren

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