AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi SOAP WSDL Import ohne Header - Tokyo 10.2
Thema durchsuchen
Ansicht
Themen-Optionen

SOAP WSDL Import ohne Header - Tokyo 10.2

Ein Thema von fisipjm · begonnen am 30. Sep 2019 · letzter Beitrag vom 7. Okt 2019
Antwort Antwort
fisipjm

Registriert seit: 28. Okt 2013
333 Beiträge
 
Delphi 12 Athens
 
#1

AW: SOAP WSDL Import ohne Header - Tokyo 10.2

  Alt 7. Okt 2019, 13:56
Hey und willkommen zurück aus dem langen Wochenede

Es läuft

@Union - Danke für den Parameter, war mir gar nicht bewusst was man alles noch an der Stelle konfigurieren kann, hatte aber tatsächlich keinen Einfluss auf das ganze.

Es funktioniert jetzt tatsächlich mit dem POST den ich als letztes rein gestellt hatte.
Beim nochmaligen durchgehen der WSDL und der daraus erzeugten Unit/Klassen ist mir aufgefallen, das für diese "UUID" bereits etwas mitimplementiert wurde. Entspricht im Prinzip genau dem was ich vorher über den ObjectToSoap part gelöst hatte, aber warum doppelten Code pflegen? Also weg mit meinerm Krahm

In der WSDL Unit wird automatisch eine entsprechende Headerklasse generiert und dann mit

Delphi-Quellcode:
  
InvRegistry.RegisterHeaderClass(TypeInfo(wsKostenstelleObj), wsKostenstelleID, 'wsKostenstelleID', 'virrpcKostenstelle/wsKostenstelle');
InvRegistry.RegisterHeaderClass(TypeInfo(kostenstelleObj), kostenstelleID, 'kostenstelleID', 'virrpcKostenstelle/kostenstelle');
"angebunden".

Das Einzige was ich noch machen musste, war mir die UUID und die Anwendungsspeziefischen Fehlermeldungen aus der Responce rausziehen. Das hab ich über das AfterExecute Event des übergebnen tHTTPRIO objekts gelöst.
Delphi-Quellcode:
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream);
var
  lSL: tstringlist;
  I: Integer;
  lXMLDoc: IXMLDocument;
begin
  lXMLDoc:= TXMLDocument.Create(nil);
  lXMLDoc.LoadFromStream(SOAPResponse);

  SOAPErrorMessage:=RecursiveFindNode(lXMLDOC.DocumentElement,'errorMessage');

  case IndexText(MethodName,['Connect_wsKostenstelle','CreatePO_kostenstelle']) of
    0: WebserviceUUID:=RecursiveFindNode(lXMLDOC.DocumentElement,'UUID');
    1: CSPortUUID :=RecursiveFindNode(lXMLDOC.DocumentElement,'UUID');
  end;
end;
Die RecursiveFindNode hab ich aus folgendem Stackoverflow Eintrag
Falls jemand sowohl für das RecursiveFindNode als auch den Ansatz die Responce aus dem Event auszulösen was zu meckern hat gern immer her damit.
Bin immer offen für konstruktive Kritik.

Bis dahin, super vielen Dank für die Hilfe. @Incocnito - Das mit dem > war üübrigens kein Problem, funktioniert ohne Probleme. Vielleicht weils nochmal gekapselt ist in verschiedenen Nodes, aber wie gesagt XML und ich sind nicht die besten Freunde?

MFG
PJM
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz