AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Thema durchsuchen
Ansicht
Themen-Optionen

API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

Ein Thema von hedie · begonnen am 10. Jan 2014 · letzter Beitrag vom 17. Feb 2021
Antwort Antwort
Seite 1 von 3  1 23      
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#1

API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 17:34
Hallo zusammen...

Lange ist es her seit meinem letzten Beitrag!
Aber nun bin ich wieder aktiver mit Delphi!

Euch allen mal ein frohes neues Jahr.


Ich stehe aktuelle vor der folgenden Aufgabe:


Ich möchte eine Dienstleistung unserer Post in meiner Applikation nutzen.
Dazu gibt es ein API. Die Anbindung erfolgt wahlweise über XML oder SOAP.

Da ich bisher noch keine erfahrungen mit beiden habe, wollte ich euch mal fragen,
welche schnittstelle den wohl einfache mit Dehlphi zu implementiere bzw. einzusetzen ist.

Mein bauchgefühl sagt mir XML. Da ich XML im ansatz kenne. Soap dagegen sagt mir nix.

Da die entsprechenden Dokumente zur integration als "geheim" eingestufft sind von unserer Post, darf ich die leider hier nicht
einfach so hochladen... Sonst hätte ich das natürlich getan.

Es steht, dass es für die übermittlung der XML-Anfrage zwei Möglichkeiten gibt:

HTTP Post im Feld XYZ
ODER HTTP RAW Post.



Ich hoffe ihr könnt mir ein paar tipps geben, da ich davon ausgehe
dass solche interfaces industrie standard sind und ihr deshalb, auch ohne die hier vorliegende dokumentation zu kennen,
mir einige tipps und hinweise geben könnt.

Ich bin über jeden hinweis froh


Danke schonmal
Liebe Grüsse
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 17:41
Es wird sich um einen Webservice handeln

http://www.post.ch/post-startseite-n...ce-barcode.htm

Interessanterweise hant die Deutsche Post dieselben Seiten und Dienste
Markus Kinzler
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#3

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 18:02
Es wird sich um einen Webservice handeln

http://www.post.ch/post-startseite-n...ce-barcode.htm

Interessanterweise hant die Deutsche Post dieselben Seiten und Dienste
Ja das ist korrekt...

Was ist den deine Meinung zu meinen Fragen?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 18:04
Da ich bisher noch keine erfahrungen mit beiden habe, wollte ich euch mal fragen,
welche schnittstelle den wohl einfache mit Dehlphi zu implementiere bzw. einzusetzen ist.
SOAP basiert auf XML. Beides hat Vor- und Nachteile in der Praxis. Mit XML kann man relativ bequem arbeiten, wenn es eine XSD-Datei gibt und diese sich mit dem Delphi Schema Binding Wizard in Delphi Code umwandeln läßt. Dann fehlt nur noch der HTTP Teil zur Datenübertragung, hierfür ist Internet Direct (Indy) geeignet.

Bei SOAP kann es je nach verlangten Standards (z.B. WS-*) mit Delphi schwieriger werden. Es gibt zwar die Möglichkeit, einen Webservice Client anhand eines WSDL Dokuments zu erstellen, aber in manchen Fällen sind noch Nacharbeiten notwendig. Der Einsatz von Testwerkzeugen wie SoapUI kann da weiterhelfen, um Soll- und Istvergleiche der HTTP Request/Response Daten zu machen. Ferner gibt es ein Delphi-kompatibles Web Service Toolkit für Free Pascal, das aktiv entwickelt wird und teilweise in Delphi fehlende Features enthält.

Falls es mit SOAP (und dem Web Service Client Wizard) in Delphi im ersten Anlauf Probleme gibt, die sich in Foren etc. nicht kurzfristig lösen lassen, würde ich wohl eher den Weg über die XML basierte Schnittstelle verfolgen.
Michael Justin
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#5

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 18:13

Falls es mit SOAP (und dem Web Service Client Wizard) in Delphi im ersten Anlauf Probleme gibt, die sich in Foren etc. nicht kurzfristig lösen lassen, würde ich wohl eher den Weg über die XML basierte Schnittstelle verfolgen.
Vielen Dank für deine Antwort.


Ich habe bisher weder eine XSD noch eine WSDL Datei erhalten. Ich vermute mal, dass es keine solchen gibt.
Es gibt lediglich ein ellen langes Dokument, welches einen XML header und dessen parameter aufzeigt, welche gesendet werden sollen/können.

Bei der SOAP Dokumentation kann ich mir nicht viel darunter vorstellen....


So wie ich dich nun verstanden habe, würdest du die SOAP Variante zuerst versuchen?

Gibt es vielleicht irgendwelche Demo projekte in delphi für XML oder SOAP?

Danke!
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 19:13
Wenn Du noch nicht mit WebServices und SOAP gearbeitet hast und es sich um die One Click Schnittstelle (Internetbriefmarke) handelt, dann vergiß es lieber. Du musst u.a. SOAP-Header patchen für die Authentifizierung, lustige Hashes berechnen usw.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (10. Jan 2014 um 19:18 Uhr)
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#7

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 19:15
Wenn Du noch nicht mit WebServices und SOAP gearbeitet hast und es sich um die One Click Schnittstelle (Internetbriefmarke) handelt, dann vergiß es lieber. Du musst u.a. SOAP-Header patchen für die Authentifizierung, lustige Hashes berechnen usw.
Hallo

Ja es handelt sich um die Briefmarken lösung.


Ich habe inzwischen die xsd files gefunden... Es gibt sie also doch

Weshalb sollte ich dies vergessen?

Was soll daran so extrem schwierig sein?

Im endeffekt sende ich ein xml "dokument" welches meine anfrage definiert und meine zugangsdaten enthält.
Und als Antwort erhalte ich meine angeforderten daten zurück
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#8

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 19:54
Weshalb hat der Union wohl seinen Text durchgestrichen?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#9

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 20:01
Drei Minuten nachdem Du Deine Antwort geschrieben hast...

Probier es doch aus.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?

  Alt 10. Jan 2014, 20:07
Weil ich Ihn laut seiner Signatur mal gewähren lassen will. Bin aber weiterhin der Meinung, dass gerade dieses Projekt nicht unbedingt zum Einstige geeignet ist. Hier eine kleine Hilfe, muß ja nicht jeder das Rad neu erfinden:

Delphi-Quellcode:
unit OneClickSoapHelpers;

interface

uses Classes, InvokeRegistry, OneClickForApp, IdHashMessageDigest, idHash, XMLIntf;

type
  TOneClickHeader = class(TSoapHeader)
  private
    FPartner_ID : string;
    FRequest_TimeStamp : string;
    FKey_Phase : integer;
    FPartner_Signature : string;
    FPartner_Key : string;
    procedure CalcSignature;
  public
    function ObjectToSOAP(RootNode: IXMLNode; ParentNode: IXMLNode;
      const ObjConverter: IObjConverter; const NodeName: string;
      const NodeNamespace: string; const ChildNamespace: string;
      ObjConvOpts: TObjectConvertOptions; out RefID: string): IXMLNode;
      override;
    property Partner_Key : string read FPartner_Key write FPartner_Key;
  published
    property Partner_Id : string Index (1) read FPartner_Id write FPartner_Id;
    property Request_TimeStamp : string Index (1) read FRequest_TimeStamp write FRequest_TimeStamp;
    property Key_Phase : integer Index (1) read FKey_Phase write FKey_Phase;
    property Partner_Signature : string Index (1)read FPartner_Signature write FPartner_Signature;
  end;

  onec = class(TOneClickHeader);


implementation

uses sysutils, strutils, Rio;

{ TOneClickHeader }
procedure TOneClickHeader.CalcSignature;
var
  idmd5 : TIdHashMessageDigest5;
  ACode : string;
begin
  ACode := trim(Partner_id)+'::'+
           trim(Request_TimeStamp)+'::'+
           IntToStr(Key_Phase)+'::'+
           FPartner_Key;
  idmd5 := TIdHashMessageDigest5.Create;
  try
    FPartner_Signature := LowerCase(LeftStr(idmd5.HashStringAsHex(ACode),8));
  finally
    idmd5.Free;
  end;
end;

function TOneClickHeader.ObjectToSOAP(RootNode, ParentNode: IXMLNode;
  const ObjConverter: IObjConverter; const NodeName, NodeNamespace,
  ChildNamespace: string; ObjConvOpts: TObjectConvertOptions;
  out RefID: string): IXMLNode;
begin
  Result := ParentNode.AddChild('PARTNER_ID');
  Result.Text := FPartner_Id;
  Result := ParentNode.AddChild('REQUEST_TIMESTAMP');
  Result.Text := FRequest_TimeStamp;
  Result := ParentNode.AddChild('KEY_PHASE');
  Result.Text := IntToStr(FKey_Phase);
  Result := ParentNode.AddChild('PARTNER_SIGNATURE');
  CalcSignature;
  Result.Text := FPartner_Signature;
end;

initialization
  InvRegistry.RegisterHeaderClass(TypeInfo(OneClickForAppPortType), onec, 'onec', '');
end.
Und Benutzung dann so:
Delphi-Quellcode:
var
  ocApp : OneClickForAppPortType;
  AuthReq : AuthenticateUserRequest;
  AuthRes : AuthenticateUserResponse;
  ocHeader : Onec;
begin
  ocApp := GetOneClickForAppPortType;

  // Header Informationen senden
  ocHeader := Onec.Create;
  ocHeader.Partner_Id := '<Von DPAG zugeteilte Partner ID>';
  ocHeader.Key_Phase := 1;
  ocHeader.Partner_Key := '<Von DPAG zugeteilter Schlüssel>';
  ocHeader.Request_TimeStamp := FormatDateTime('ddmmyyyy-hhmmss', Now);
  (ocApp as ISOAPHeaders).Send(ocHeader);
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 16:54 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