API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
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 |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
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 |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Zitat:
Was ist den deine Meinung zu meinen Fragen? |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Zitat:
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. |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Zitat:
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! |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
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.
|
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Zitat:
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 :) |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Weshalb hat der Union wohl seinen Text durchgestrichen?
|
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
Drei Minuten nachdem Du Deine Antwort geschrieben hast...
Probier es doch aus. |
AW: API Anbindung mit XML oder SOAP möglich. Welches soll ich wählen?
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:
Und Benutzung dann so:
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.
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); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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