Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SOAP Envelope bearbeiten (https://www.delphipraxis.net/189889-soap-envelope-bearbeiten.html)

wilroe 4. Aug 2016 12:41

SOAP Envelope bearbeiten
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo zusammen,

Ich hoffe, Ihr könnt mir weiter helfen.

Ich möchte einen von einem externen Unternehmen angebotenen Web Service nutzen. Dazu nutze ich den WebServices WSDL Import in Delphi 2007. Anhand der eingegebenen Daten wird eine Unit generiert, über eine kleine Form erarbeite ich einen Input Satz und starte damit den Web Service. Es wird automatisch eine Anfrage mit einem SOAP Envelope erstellt, der folgendermaßen aussieht (Der Namespace ist nicht qualifiziert!):

Anhang 45663

Beim Test mit der Anwendung „SOAP UI“ bekomme ich folgenden Fehler zurück:

Anhang 45664

Nach Rücksprache mit dem Anbieter des Web Service habe ich festgestellt, dass mein Request wohl funktionieren würde, wenn folgende Änderungen im SOAP-Envelope realisiert würden. Die leeren Namespaces (xmlns=““) stören offensichtlich nicht. Ein Test mit „SOAP UI“ bestätigt das. Ich bekomme eine korrekte Antwort.

Anhang 45665

Body Elemente benötigen offenbar einen qualifizierten Namespace (hier „guid“). Der wird bei der Generierung nicht mitgeliefert. Und ich habe derzeit keinen blassen Schimmer, wie ich das nachträglich anpassen soll. Einen Schalter bzw. eine Einstellungsmöglichkeit habe ich dafür nicht gefunden.

Kann mir da eventuell jemand helfen?

LG Willi

DeddyH 4. Aug 2016 14:26

AW: SOAP Envelope bearbeiten
 
Hallo, als erster Ansatz kann das hier dienen: http://stackoverflow.com/questions/1...nbeforeexecute (wobei ich hier wohl eher mit "echtem" XML arbeiten würde, anstatt mit einer Stringliste).

wilroe 4. Aug 2016 15:16

AW: SOAP Envelope bearbeiten
 
Danke Detlef,

bin ich vorhin schon drauf gestoßen, habe aber das Problem, dass er mir bei:

RIO.OnBeforeExecute := RIO_BeforeExecute;

den Fehler "E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'" schmeißt.

Willi

DeddyH 4. Aug 2016 16:16

AW: SOAP Envelope bearbeiten
 
RIO_BeforeExecute muss auch eine Methode einer Klasse (notfalls der eigenen) sein.

[edit] Zur Verdeutlichung:
Delphi-Quellcode:
(* Reguläre Prozedur *)
procedure TuWas;
begin
  //Code
end;

(* (Instanz-)Methode der Klasse TDingens *)
type
  TDingens = class
  public
    //Deklaration
    procedure TuWas;
  end;

...

//Implementation
procedure TDingens.Tuwas;
begin
  //Code
end;
[/edit]

wilroe 5. Aug 2016 18:35

AW: SOAP Envelope bearbeiten
 
Hallo Detlef,

vielen Dank. Hat mir sehr geholfen. Problem gelöst. :-D

Schönes Wochenende
Willi


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz