Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SOAP Problem (https://www.delphipraxis.net/178831-soap-problem.html)

hungrycoder 30. Jan 2014 12:52

SOAP Problem
 
Hallo Leute,
versuche mich gerade mit QAddress. Vielleicht kennt ja einer von euch den Service. Mein Problem ist, dass ich kein Response bekomme. Versuche seit gestern irgendwelche Einstellungen und Möglichkeiten zu finden, dass es doch funktioniert, klappt nur irgendwie nicht.

Delphi-Quellcode:
var checks : UCheckAddressSimple;
    results : UCheckAddressSimpleResponse;
begin
  try
    checks := UCheckAddressSimple.Create;
    checks.UserName := 'test';
    checks.UserPassword := 'test';
    checks.Tolerance := 1;
    checks.Country := 'DE';
    checks.ZIP := '41252';
    checks.City := 'Sp';
    checks.Street := 'Eugen-Bolz-Straße';
    results := UCheckAddressSimpleResponse.Create;
    results := (HTTPRIO1 as QACWebServiceSoap).UCheckAddressSimple(checks);

  finally
    FreeAndNil(results);
    FreeAndNil(checks);
  end;
UCheckAddressSimple erwartet ein Objekt vom Typ UCheckAddressSimple und gibt ein Objekt vom Typ UCheckAddressSimpleResponse zurück. Die Einstellungen von HTTPRIO sind folgende:
Port: QACWebServiceSoap12
Service: QACWebService
WSDLLocation: http://qws2.de/ACWS/QaCWebService.asmx?WSDL

Bekomme folgende Fehlermeldung: URL/Endpunkt für Service/Port 'QACWebService/QACWebServiceSoap12' kann nicht von WSDL 'http://qws2.de/ACWS/QaCWebService.asmx?WSDL' gelesen werden.

Benutze ich den anderen Port der mir zur Verfügung steht: QACWebServiceSoap
Kommt diese Fehlermeldung: Element enthält keinen einzelnen Textknoten

Bitte um eure Hilfe.

Viele Grüße


hungrycoder

mjustin 30. Jan 2014 12:56

AW: SOAP Problem
 
Zur Einkreisung des Problems ist ein Vergleich des von Delphi erzeugten Requests mit einem "funktionierenden" SOAP Request auf diesen Service sinnvoll.

Ideal ist es, wenn der Web Service eine Dokumentation mit vollständigen Request/Response Beispielen enthält.

In der Realität hilft dann SoapUI weiter, wenn damit eine korrekte Response kommt, muss man nur noch den SoapUI Request mit dem Delphi Request vergleichen.

hungrycoder 30. Jan 2014 13:05

AW: SOAP Problem
 
@mjustin danke für deine schnelle Antwort. Hatte vergessen es oben zu schreiben. Bekomme mit SOAPUI mit gleichen Einstellungen einen Response zurück, nur mit Delphi haut es noch nicht so hin.
Die Beispiele in der Doku beziehen sich zwar auf C# konnte es aber richtig umschreiben. Deswegen bin ich auch am verzweifeln, da mir keine weiteren Möglichkeiten einfallen etwas anders zu machen...Noch Ideen?

mjustin 30. Jan 2014 13:10

AW: SOAP Problem
 
Zitat:

Zitat von hungrycoder (Beitrag 1245974)
@mjustin danke für deine schnelle Antwort. Hatte vergessen es oben zu schreiben. Bekomme mit SOAPUI mit gleichen Einstellungen einen Response zurück, nur mit Delphi haut es noch nicht so hin.
Die Beispiele in der Doku beziehen sich zwar auf C# konnte es aber richtig umschreiben. Deswegen bin ich auch am verzweifeln, da mir keine weiteren Möglichkeiten einfallen etwas anders zu machen...Noch Ideen?

Wie gesagt: nun muss man "nur" noch den SoapUI Request mit dem Delphi Request vergleichen.

Also Delphi Request aufzeichnen, als Text speichern, dann mit einem Diff Tool die Unterschiede untersuchen...

hungrycoder 30. Jan 2014 13:21

AW: SOAP Problem
 
@mjustin
Das Problem besteht ja auch darin, dass an der Stelle an der ich den Request anschauen möchte eine Fehlermeldung kommt und er alles weitere abbricht. Ich kenne mich mit SOAP überhaupt nicht aus, was sind die häufigsten Fehler? Vielleicht muss ich nur etwas ändern?!

Bernhard Geyer 30. Jan 2014 14:54

AW: SOAP Problem
 
Welche Delphi-Version wird verwendet?
Hier wurde über die Jahre viel gestrickt damit es halbwegs funktioniert.

mjustin 30. Jan 2014 15:25

AW: SOAP Problem
 
Zitat:

Zitat von hungrycoder (Beitrag 1245980)
@mjustin
Das Problem besteht ja auch darin, dass an der Stelle an der ich den Request anschauen möchte eine Fehlermeldung kommt und er alles weitere abbricht.

Um den Request abzufangen, kann ein HTTP Proxy (Fiddler) benutzt werden, der zeichnet den SOAP XML Request auf bevor er an den Web Service weitergeleitet wird.

Die IP-Adresse des Fiddler Proxyservers (normalerweise läuft auf der Workstation, also 127.0.0.1) wird dazu im Client eingetragen (wenn ich mich richtig erinnere als "ProxyHost").

SOAP kann ein steiniges Pflaster sein :)

hungrycoder 31. Jan 2014 10:31

AW: SOAP Problem
 
@mjustin
Das klingt irgendwie monströs. Ich habe es geschafft den Response und den Request in Delphi auszugeben. Das Problem besteht also nach wie vor nach dem ich die Funtkion aufgerufen habe.
Der Fehler heißt nun: Element enthält keinen einzelnen Textknoten
Die Fehlermeldung an sich nervt mich eigentlich nicht, das Problem ist nur, dass ich auf den Response keinen Zugriff habe. Die Response Anzeige habe ich beim OnAfterExecute durch den Stream des Responses bekommen. Hat jemand eine Idee woran diese Fehlermeldung liegen könnte?


@Bernhard Geyer
Benutze Delphi 2007.

Lemmy 31. Jan 2014 11:03

AW: SOAP Problem
 
hm.. warum erzeugst Du den response selber und wunderst dich, dass die Fehlermeldung kommt, dass ein Textknoten leer ist?

Versuch es mal so:
Bei mir klappt das nicht, weil die Login-Informationen fehlen, die such ich mir jetzt aber nicht auch noc zusammen...


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var checks : UCheckAddressSimple;
    Response : UCheckAddressSimpleResponse;
begin
  try
    checks := UCheckAddressSimple.Create;
    checks.UserName := 'test';
    checks.UserPassword := 'test';
    checks.Tolerance := 1;
    checks.Country := 'DE';
    checks.ZIP := '41252';
    checks.City := 'Sp';
    checks.Street := 'Eugen-Bolz-Straße';

    Response := GetQACWebServiceSoap.UCheckAddressSimple(checks);

    memo1.Lines.Add(Response.UCheckAddressSimpleResult.ErrorMessage);
    Memo1.Lines.Add(IntToStr(Response.UCheckAddressSimpleResult.ErrorCode));
    Memo1.Lines.Add(IntToStr(Response.UCheckAddressSimpleResult.ResultStatus));
  finally
    FreeAndNil(Response);
    FreeAndNil(checks);
  end;
end;

theoneand 31. Jan 2014 11:09

AW: SOAP Problem
 
da kommt dann genau die gleich fehlermeldung


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Seite 1 von 2  1 2      

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