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 2  1 2      
hedie

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

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

  Alt 10. Jan 2014, 18: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
 
#2

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

  Alt 10. Jan 2014, 18: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
 
#3

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

  Alt 10. Jan 2014, 19: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
 
#4

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

  Alt 10. Jan 2014, 19: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
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, 19:17
Lieber Union

Vielen Dank!

Ich bin gerade dabei den puren XML Request zu testen...

Es gibt dazu eine online test-suite. Diese generiert auch die "XML-Datei" für den Request und sendet diesen ab.

Ich habe mir zwei memos auf meine form gezogen. Einen idHTTP und einen SSLIOSockshandler... Für die HTTPS Seite

Nun sende ich wie folgt:

Memo2.test := idHttp1.post('https://diensleister.ch....',memo1.lines Ins memo1 kopiere ich 1:1 den XML Request aus der Testsuite.
Als Antwort erhalte ich jedoch einen Error. "Die XML-Anfrage ist fehlerhaft."

Ich werde nun noch deinen SOAP Code testen.

Vielen Dank dafür!

Dies wird vermutlich jedoch ein etwas grösserer blindflug.

Vielleicht sollte ich hier noch anmerken, dass ich nicht das gesamte Sortiment bzw. Angebot des Dienstleisters nutzen möchte,
sondern nur zwei drei wenige. Zudem ist es nur für mich privat im einsatz...
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
 
#6

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

  Alt 10. Jan 2014, 19:56
Gut, hat nun geklappt!

Habe die simple xml variante gewählt.


Für all jene, die es interessiert hier der code der zum Ziel führte:

Delphi-Quellcode:
procedure TForm1.SendPostData;
Var
oXMLHTTP: IXMLHTTPRequest;
lParams: TStringList;
FResponseText: String;
FResponseHdrs: String;
begin
lParams := TStringList.Create;
lParams.LoadFromFile('test.xml');
oXMLHTTP := CreateOleObject('MSXML2.XMLHTTP.3.0') as IXMLHTTPRequest;
oXMLHTTP.open('POST',
'https://secure.dev.gateway.gov.uk/submission', False, EmptyParam,
EmptyParam);
oXMLHTTP.send(lParams.Text);
// The ResponseText is what is returned by the server
FResponseText := Trim(oXMLHTTP.ResponseText);
FResponseHdrs := oXMLHTTP.getAllResponseHeaders;
showmessage(FResponseText);
end;
(Quelle: http://www.delphigroups.info/2/1/207972.html)

Dieser Code verwendet die Datei MSXML2_TLB
Diese geistert im Netz herum. (http://code.google.com/p/omnixml/sou...MSXML2_TLB.pas)

Dazu muss man noch ActiveX und comobj in die uses aufnehmen.

Nun erhalte ich eine korrekte antwort zurück. Der nächste Schritt wird sein, diese zu interpretieren...

Vielleicht hat ja noch jemand eine vermutung, weshalb idhttp.post() nicht funktioniert hat...
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#7

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

  Alt 13. Jan 2014, 10:37
Funktioniert das besser als Stampit?

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

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

  Alt 13. Jan 2014, 10:53
Funktioniert das besser als Stampit?
Für den Unbedarften liest sich das aber seltsam:
Zitat:
Stampit - Mehr Vorteile durch kostenfreie Alternativen
Die STAMPIT-Frankiersoftware wird aufgrund neuer, browser- und plattformunabhängiger
Alternativen der Deutschen Post - wie z.B. des kostenfreien Online-Services INTERNETMARKE - nicht mehr weiterentwickelt.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 17. Feb 2021, 10:34
Hier eine kleine Hilfe, muß ja nicht jeder das Rad neu erfinden:
Vielen Dank. Das hat mir auch nach 7 Jahren noch geholfen.
Ich muss jetzt auch diese SOAP-Anbindung für die Internetbriefmarke (OneClick4App) implementieren.

Eine Frage dazu:
Bei den weiteren Anfragen muss ja eine pplId (Produktpreisliste) und der ProductCode übergeben werden. Wo bekomme ich diese ID und die Codes denn her?
  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 17. Feb 2021, 10:57
Bei den weiteren Anfragen muss ja eine pplId (Produktpreisliste) und der ProductCode übergeben werden. Wo bekomme ich diese ID und die Codes denn her?
Die PPL werden regelmäßig aktualisiert - du erhältst bei Änderungen automatisierte E-Mails hierzu.
Zitat von produktwebservice@deutschepost.de:
Sehr geehrte Damen und Herren,

seit dem 04.12.2020 stehen neue oder geänderte Produkte zur Abholung für Sie bereit.
Der Gültigkeitsbeginn dieser Produkte ist/war am 01.01.2021.

Bitte übergeben Sie im Methodenaufruf zum Holen der Produkte den oben genannten Gültigkeitsbeginn als Parameter.

Diese E-Mail wurde automatisch generiert.
Bei Fragen und Wünschen wenden Sie sich bitte an die ProdWS-Administration!
Manchmal (sic!) wird die PPL auch als E-Mail Anhang im csv-Format gesendet.

Der Abruf erfolgt über den (wsse-gesicherten) ProdWS-Webservice (ProductInformation.wsdl) über das in der E-Mail angegeben Gültigkeitsdatum. Es empfiehlt sich IMHO, die Produktdaten zwischenzuspeichern, da sich ein ständiger Abruf wegen der Größe verbietet (> 20k Zeilen XML pro Abruf).
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:50 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