xml senden und empfangen mit Xb2Net - SOAP

Xb2.Net von Boris Borzic

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

xml senden und empfangen mit Xb2Net - SOAP

Beitrag 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.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag von brandelh »

das würde besser zum WEB passen oder ?

Hast du ein Beispiel wie die Anforderung XML Datei aussehen soll ?
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag 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> 
Gruß
Klaus
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag 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
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag 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.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag von brandelh »

Waaas für ein langer Quelltext ;-)

Aber man sieht, der MAINSTREAM wird mit fertigem Code belohnt :wink:
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net - SOAP

Beitrag 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). ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: xml senden und empfangen mit Xb2Net - SOAP

Beitrag 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.
Herzlich,
Tom
Antworten