Einzelnen Beitrag anzeigen

fisipjm

Registriert seit: 28. Okt 2013
251 Beiträge
 
#9

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