AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Webservice

Ein Thema von InschenierSB · begonnen am 25. Apr 2018 · letzter Beitrag vom 17. Mai 2018
Antwort Antwort
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#1

AW: Webservice

  Alt 4. Mai 2018, 14:51
Ich würde den Ansatz mit der DLL weiterverfolgen.

Minimalbeispiel:
Ich werde es jetzt doch über Indy-HTTP versuchen, vielleicht hast du ein paar Tipps oder Tutorials dazu, habe schon angefangen den Header aufzubauen.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Webservice

  Alt 4. Mai 2018, 15:48
Hier zum Beispiel:
https://www.delphi-treff.de/tutorial...internet/indy/

Du musst dich aber auch mit XML und den Umgang damit in Delphi auskennen, wenn du das umsetzen willst.
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#3

AW: Webservice

  Alt 7. Mai 2018, 08:48
Hier zum Beispiel:
https://www.delphi-treff.de/tutorial...internet/indy/

Du musst dich aber auch mit XML und den Umgang damit in Delphi auskennen, wenn du das umsetzen willst.
Hallo Tilo,
Vielleicht kannst du mir einen kleinen Tipp geben.
Habe einen Webservice gefunden, welcher mir auf Anfrage der Bankleitzahlen entsprechende Daten der jeweiligen Bank gibt.
Im SOAP-UI passt soweit alles. Ich weiß jetzt nur nicht wie ich den Request in Delphi formulieren soll?! Also in meinem Beispiel die Anfrage der BLZ.
Ich hänge auch nochmal einen Screenshot vom SOAP-UI an.
Danke schonmal.

Hier der CODE:
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;
   // procedure IdHTTP1Connected(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//SB procedure TForm1.IdHTTP1Connected(Sender: TObject);

var
Stream:TMemoryStream;
Url: String;
URL_:String;
List: TStrings;
HTTP_Version: TStringStream;
Result: String;
 Test:TIdHeaderInfo;
 procedure TForm1.Button1Click(Sender: TObject);
begin
  IdHTTP1:=TIdHTTP.Create(nil);
  HTTP_Version:= TStringStream.Create('HTTP/1.1');
  List:=TStringlist.Create;
  List.Add('axis2');
  List.Add('services');
  List.Add('BLZService');


  Url:= 'http://thomas-bayer.com/axis2/services/BLZService';

  // IdHTTP1.ProtocolVersion:='1.1';
 IdHTTP1.Request.ContentType:='text/xml;charset=UTF-8';
 IdHTTP1.Request.Connection:='Keep-Alive';
 IdHTTP1.Host:= 'thomas-bayer.com';
 IdHTTP1.Request.UserAgent:= 'Apache-HttpClient/4.1.1 (java 1.5)';
 IdHTTP1.Request.ContentLength:= 280;
// IdHHTP1.Request.
 IdHTTP1.Request.AcceptEncoding:= 'gzip,deflate';
 IdHTTP1.Post('ttp://thomas-bayer.com',List,HTTP_Version);
 IdHTTP1.Port:=80;
 IdHTTP1.Get(URL_,Stream);
// Stream.LoadFromStream();
 memo1.Lines.Add(IdHTTP1.Response.Server);
 //Memo2.text:=IdHTTP1.Post('http://thomas-bayer.com/axis2/services/BLZService',List,HTTP_Version);
end;
Angehängte Grafiken
Dateityp: jpg Soap_Screensh.jpg (65,3 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#4

AW: Webservice

  Alt 7. Mai 2018, 10:08
Schnell zusammen gebastelt und es klappt auch:
Siehe dazu:
http://docwiki.embarcadero.com/CodeE...TP_Get_(Delphi)
https://www.delphipraxis.net/184029-...en-fehler.html

Code:
procedure TForm1.FormCreate(Sender: TObject);
var
  HTTP: TIdHTTP;
  Body: TStringList;
  Response: String;
  IdLogDebug: TIdLogDebug;
  Stream: TMemoryStream;
begin
  try
    IdLogDebug := TIdLogDebug.Create;
    IdLogDebug.Active := true;
    Stream := TMemoryStream.Create;
    HTTP := TIdHTTP.Create;

    HTTP.Request.ContentType := 'application/soap+xml;charset=UTF-8';

    HTTP.Request.AcceptEncoding := 'gzip,deflate';
    HTTP.Intercept := IdLogDebug;
    Body := TStringList.Create;
    Body.Add('<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:blz="http://thomas-bayer.com/blz/">');
    Body.Add('<soap:Header/>');
    Body.Add('<soap:Body>');
    Body.Add('<blz:getBank>');
    Body.Add('<blz:blz>50010517</blz:blz>');
    Body.Add('</blz:getBank>');
    Body.Add('</soap:Body>');
    Body.Add('</soap:Envelope>');
    Body.SaveToStream(Stream);

    Response := HTTP.Post('http://thomas-bayer.com/axis2/services/BLZService', Stream);

    HTTP.Destroy;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end;
PS: Das Schnipsel sollte man nicht 1 zu 1 übernehmen, ich bin mir recht sicher das hier einiges nicht korrekt freigegeben wird, ganz zu schweigen vom style.

Geändert von Elrond ( 7. Mai 2018 um 10:12 Uhr)
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#5

AW: Webservice

  Alt 7. Mai 2018, 10:52
So am Rande, auch indy kann SOAP:
http://www.indyproject.org/SOAP/
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#6

AW: Webservice

  Alt 7. Mai 2018, 10:53
Kein Thema Elrond,
habe e soweit schon hinbekommen. Was noch nicht so ganz klappt ist die Response auszugeben.
Im Wireshark habe ich eine Aufzeichnung parallel laufen, da sehe ich das die Antwort korrekt gesendet wird.
Mein Problem ist der Post. Der möchte drei Parameter übergeben bekommen, und wenn ich die Response zuweise meckert der Compiler wegen inkompatibler Daten.

Nehme mal an dass das wieder an der steinalten Delphi-Version (6) liegt. Aber ich muss diese verwenden.
Ich habe mal einen Screenhot vom Code angehangen.
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#7

AW: Webservice

  Alt 7. Mai 2018, 10:54
Man sollte den Screen-Shot auch hochladen.....
Angehängte Grafiken
Dateityp: png Screensh.Code.PNG (44,3 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#8

AW: Webservice

  Alt 7. Mai 2018, 12:38
Habe es glaube ich rausgefunden.
Bis hierher schonmal danke an alle!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Webservice

  Alt 7. Mai 2018, 11:06
Nehme mal an dass das wieder an der steinalten Delphi-Version (6) liegt. Aber ich muss diese verwenden.
Die aktuelle Version 10.6.2 von Indy ist auch noch mit alten Delphi Versionen einsetzbar (bis zu Delphi 5).

Wenn die Komponenten im Code dynamisch erzeugt werden, spart man sich auch die Package-Installation und kann neue Projekte parallel mit der neuen Version entwickeln.
Michael Justin
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#10

AW: Webservice

  Alt 7. Mai 2018, 11:56
Kein Thema Elrond,
habe e soweit schon hinbekommen. Was noch nicht so ganz klappt ist die Response auszugeben.
Im Wireshark habe ich eine Aufzeichnung parallel laufen, da sehe ich das die Antwort korrekt gesendet wird.
Mein Problem ist der Post. Der möchte drei Parameter übergeben bekommen, und wenn ich die Response zuweise meckert der Compiler wegen inkompatibler Daten.

Nehme mal an dass das wieder an der steinalten Delphi-Version (6) liegt. Aber ich muss diese verwenden.
Ich habe mal einen Screenhot vom Code angehangen.
Mein Beispiel müsste 1 zu 1 bei dir klappen und im Response steht auch die Antwort als string. Da ich kein Delphi 6 habe kann ich es natürlich nicht überprüfen, aber falls tatsächlich die API von Indy nicht zu 100% gleich ist für jede Version, dann musst du eben die Methode korrekt aufrufen. Aus der ferne würde ich einfach mal raten das dein Post noch einen Parameter für die Antwort erwartet und zwar von Typ TStream. Wenn du jetzt mein Response von Typ string reinpackst, dann ist es logisch das es nicht geht.
  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 06:32 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