Seite 1 von 1

xml senden und empfangen mit Xb2Net - SOAP

Verfasst: Di, 15. Jul 2014 17:22
von Koverhage
Schreibe das hier, da es Xb2Net nicht extra gibt.

Ich habe keine Ahnung von Xb2Net und Soap, etc.
Wie mache ich das in Xb2Net?
Die Xml Datei wird von mir erzeugt.

Zum Bezug einer Registriernummer ist
die Methode "Datenregistratur" im WEB-Service implementiert, die wie folgt aufzurufen ist:

XmlDocument Datenregistratur (XmlDocument doc)

doc: XML-Dokument mit den Pflichtangaben zur Erteilung einer Registriernummer

Die Methode liefert das Ergebnis in einem XML-Dokument zurück.

Re: xml senden und empfangen mit Xb2Net

Verfasst: Di, 15. Jul 2014 17:28
von brandelh
das würde besser zum WEB passen oder ?

Hast du ein Beispiel wie die Anforderung XML Datei aussehen soll ?

Re: xml senden und empfangen mit Xb2Net

Verfasst: Mi, 16. Jul 2014 8:21
von Koverhage
Hier, aber die habe ich ja schon erstellt.

In den Beispielen zu Xb2Net habe ich nur Aufrufe mit exe, etc. gesehen,
hier ist das so
Test-Client für Test-System



Das DIBt stellt einen Test-Client zur Überprüfung und zum Test der Eingabe – XML zur Verfügung,
dort sind auch die XSD-Dateien für die Eingabe-/Ausgabe-Dateien verfügbar.
https://energieausweis.dibt.de/schema/S ... assung.xsd
https://energieausweis.dibt.de/schema/X ... tratur.xsd
https://energieausweis.dibt.de/schema/X ... assung.xsd



Der Test-Client kann aufgerufen werden unter:



https://energieausweis.dibt.de/sandbox/webservicetest
a) Aufrufkonvention zur Registratur eines Energieausweises (Beispiel)


Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Datenbeispiel - Energieausweis zur Nutzung WEB-Service Registriernummernvergabe
<root xmlns="https://energieausweis.dibt.de/schema/SchemaDatenErfassung.xsd"> 
<Authentifizierung> 
 <Aussteller_ID_DIBT>test@test.de</Aussteller_ID_DIBT> 
 <Aussteller_PWD_DIBT>FA02193CBF8EEF3C4A4C639D2DB24221</Aussteller_PWD_DIBT>
</Authentifizierung> 
<EnEV-Nachweis> 
 <Ausstellungsdatum>2014-02-12</Ausstellungsdatum> 
 <Bundesland>Berlin</Bundesland> 
 <Postleitzahl>12101</Postleitzahl> 
</EnEV-Nachweis> 
<Energieausweis-Daten> 
 <Gebaeudeart>Wohngebäude</Gebaeudeart> 
 <Art>Energieverbrauchsausweis</Art> 
 <Neubau>1</Neubau> 
</Energieausweis-Daten> 
</root> 

Re: xml senden und empfangen mit Xb2Net

Verfasst: Mi, 16. Jul 2014 10:20
von Rudolf
Hallo Klaus,
wenn es um die Kommunikations geht, hilft vielleicht das Beispiel mit XB2NET
Grüße
Rudolf

Code: Alles auswählen

cUrl := "https://teambox.com/api/1/projects -u formcommander:1245789"
oHttp := TServerXMLHTTPRequest():New()
if oHttp:Open("POST",cUrlList,,"formcommander","1245789")
     dc_hourglasson()
     oHTTp:lIgnoreCertAll := .t.
     if oHttp:Send()
           sleep(5)
           cc := oHttp:responseBody
           if !empty(cc)
               dc_hourglassoff()
               return cc
           else
               wmeld("no response from " + cUrl)
               return NIL
           endif
     else
          dc_hourglassoff()
          wmeld("Error send GET message to server:" + cUrl)
          return NIL
     endif
else
     wmeld("Error open " + cUrl)
endif
return NIL

Re: xml senden und empfangen mit Xb2Net

Verfasst: Mi, 16. Jul 2014 10:55
von Tom
Das sieht für mich nach einem WSDL aus, womit SOAP Mittel der Wahl wäre. Du hast doch eXpress++, Klaus, oder? Da gibt es u.a. ein Tool "SOAPTEST.EXE" (<ExpressDir>\Samples\Soap), in dem Du einfach Parameter bestimmen und Abfragen auslösen kannst. Xb2.Net wird verwendet. Dort siehst Du auch die erzeugten Requests als XML-Struktur. SOAP ist relativ simpel, und man kann theoretisch auch darauf verzichten, sich die Beschreibungsdaten (WSDL/XSD) anzusehen. Entscheidend ist, dass man den Abruf richtig parametrisiert.

Re: xml senden und empfangen mit Xb2Net

Verfasst: Mi, 16. Jul 2014 11:26
von Koverhage
Hallo Tom,

werde das mal mit SOAPTEST.EXE probieren.
Aus der Beschreibung gibt es beide Möglichkeiten
4 Beispiel für WEBService-Nutzung in C##





1. Nach dem Hinzufügen des entsprechenden WEB_Service-Verweises zum Projekt



Testsystem
https://energieausweis.dibt.de/sandbox/ ... rvice.asmx



Produktivsystem
https://energieausweis.dibt.de/publishe ... rvice.asmx
...



XmlDocument xml = new XmlDocument();
XmlDocument xmlresult = new XmlDocument();



xml.Load(Server.MapPath("~/") + "bsp.xml"); //*** Bsp. XML laden




DibtEnergieAusweisServiceSoapClient s = new DibtEnergieAusweisServiceSoapClient();





XmlElement xe = xmlresult.CreateElement("root");
xe.InnerXml = ((XmlElement)s.Datenregistratur(xml.DocumentElement)).InnerXml;
xmlresult.AppendChild(xe);





oder





XmlNode xmlNodeObject_result = s.Datenregistratur(xml.DocumentElement);
xmlresult.AppendChild(xmlresult.ImportNode(xmlNodeObject_result, true));





...





2. Für eine direkte Parametrisierung in einem Client kann eine erweiterte WSDL zur
WEB-Service-Einbindung verwendet werden:



Testsystem
https://energieausweis.dibt.de/sandbox/ ... eEx01.wsdl



Produktivsystem
https://energieausweis.dibt.de/publishe ... eEx01.wsdl



Dies stellt entsprechend der eingebundenen XSD's konfigurierte Klassen für den Zugriff auf die Eingabe- und
Rückgabeparameter für den WEB-Service-Aufruf bereit.

Re: xml senden und empfangen mit Xb2Net

Verfasst: Mi, 16. Jul 2014 12:13
von brandelh
Waaas für ein langer Quelltext ;-)

Aber man sieht, der MAINSTREAM wird mit fertigem Code belohnt :wink:

Re: xml senden und empfangen mit Xb2Net

Verfasst: Mi, 16. Jul 2014 13:24
von Tom
Es gibt im Testsystem eine Funktion "Datenregistratur". Das trägst Du in "SOAPTEST" bei "Method" ein, darunter (Response) "DatenregistraturResponse". Die URL trägst Du weiter oben ein ("URL"). "Style" dürfte "Document" sein, "Serialization" "Literal". Spannend ist es bei den Variablen, deren Reihenfolge irrelevant ist. "Type" ist meistens "Character". Du kannst dann per "Run Test" sehen, was die Methode antwortet (speichern der Abfrage nicht vergessen - Namen bei "Ini Group" hinterlegen"). Du siehst dann auch (auf den weiteren Karteireitern), welchen Request das Tooll erzeugt - und kannst ihn z.B. hiermit vergleichen:

https://energieausweis.dibt.de/sandbox/ ... egistratur

Im Quellcode des Tools siehst Du, wie es gemacht wird. Die WSDL- und XSD-Dateien kannst Du ignorieren. Eigentlich muss man die, wenn man WSDL macht, abrufen, um daraus abstrakte Requests zu erzeugen, aber so lange sich dort nichts ändert, ist es verzichtbar.

Re: xml senden und empfangen mit Xb2Net - SOAP

Verfasst: Mi, 16. Jul 2014 16:09
von brandelh
TOM hat geschrieben: Eigentlich muss man die, wenn man WSDL macht, abrufen, um daraus abstrakte Requests zu erzeugen
Liefert die Abfrage also quasi ein leeres XML-Formular mit allen Feldern zum Ausfüllen zurück ?

PS: ich habe das Thema mal ins WEB verschoben, mit SQL hat es ja nix zu tun (außer dem Hersteller). ;-)

Re: xml senden und empfangen mit Xb2Net - SOAP

Verfasst: Mi, 16. Jul 2014 16:46
von Tom
Nein. Eine WSDL-Datei beschreibt die Struktur eines (SOAP)-Webservices, also verfügbare Methoden/Funktionen, Parameter und Rückgabewerte. WSDL steht für "Web Services Description Language". Wenn man mit einem Webservice arbeitet, erlaubt diese Datei, die Abfragen dynamisch möglichen Änderungen anzupassen. Man muss sie aber nicht verwenden. Wenn man die URLs/Namespaces, Funktionsnamen und Parameter kennt (aus der WSDL-Datei :wink: ), generiert man einfach einen Request mit diesen Daten, feddisch. Als Rückgabe bekommt man einen "SOAP-Envelope", in den die Antwortdaten eingebunden sind. Mit Xb2.Net kann man diese Daten einfach als Instanzen des Rückgabeobjekts abrufen. Dieses Rückgabeobjekt ist der Content des Request-Objekts. In Boris' Beispielen ist das gut sichtbar, aber noch besser in denen von Roger.