AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Mit Rest-Komponenten auf Shopware-API zugreifen

Mit Rest-Komponenten auf Shopware-API zugreifen

Offene Frage von "sahimba"
Ein Thema von Guido R. · begonnen am 1. Aug 2016 · letzter Beitrag vom 12. Feb 2017
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
131 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#11

AW: Mit Rest-Komponenten auf Shopware-API zugreifen

  Alt 3. Aug 2016, 13:44
Mit den Indys geht es relativ einfach...
Delphi-Quellcode:
procedure TRestForm.GetArticlesButtonClick(Sender: TObject);
var MS : tMemoryStream;
begin
 MS := tMemoryStream.Create;
 
 idHttp1.Request.BasicAuthentication := false;
 idHttp1.HTTPOptions := idHttp1.HTTPOptions + [hoInProcessAuth]; // <- Ohne das schlägt es fehl !!!
 idHTTP1.Request.Username := UsernameEdit.Text;
 idHTTP1.Request.Password := KeyEdit.Text;
 idHTTP1.Get(URLEdit.Text+'/articles', MS);
 
 MS.Position := 0;
 ResponseMemo.Lines.LoadFromStream(MS);
 FreeAndNil(MS);
end;
Einer Umsetzung mit den Delphi-REST-Komponenten bin ich damit aber keinen Schritt näher...
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
131 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

AW: Mit Rest-Komponenten auf Shopware-API zugreifen

  Alt 5. Aug 2016, 21:47
Ich setze das ganze im Moment mit den Indys um und das funktioniert auch wunderbar, aber es wurmt mich dennoch, dass ich das nicht mit den REST-Komponenten umgesetzt bekomme. Ich habe auch keinen echten Ansatz, da bei vielen Funktionen, die mir weiterhelfen könnten in der Hilfe nur :
"Embarcadero Technologies verfügt zurzeit über keine zusätzlichen Informationen. Bitte unterstützen Sie uns bei der Dokumentation dieses Themas, indem Sie Ihre Kommentare auf der Diskussionsseite eingeben."
steht. "Rate mal wie's funktioniert" finde ich ein echt blödes Konzept
  Mit Zitat antworten Zitat
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
19 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#13

AW: Mit Rest-Komponenten auf Shopware-API zugreifen

  Alt 12. Feb 2017, 17:14
Ich habe auch schon länger versucht mit Delphi auf die Shopware-API zuzugreifen. Die Rest-Komponenten von Delphi bieten leider keinen "TDigestAuthenticator", um die von Shopware verwendete Digest-Authentifizierung zu unterstützen.

Aber Delphi verwendet ja inzwischen die systemspezifischen HTTP-Kompontenen für die Rest-Zugriffe, unter Windows also WinHTTP. Das beherrscht im Prinzip die Digest-Methode. Das Dumme ist nur, dass man man über die Rest-Komponenten (RestClient und RestRequest) nicht an die verwendeten HTTP-Komponenten herankommt, da diese als Private deklariert sind. Man hat also keine direkte Chance, die Zugangsdaten für WinHTTP zu setzen.

Man könnte jetzt probieren, über irgendwelche Hacks an die Privaten Eigenschaften zu kommen, ich habe aber eine einfachere Möglichkeiten gefunden und zeige es am Beispiel des Delphi RestDebuggers:

Man übergibt die Zugangsdaten in der URL:

Code:
http://benutzername:apikey@www.server.de/api
Das Problem ist dabei allerdings, dass die so gesetzten Zugangsdaten unterwegs verloren gehen. Schuld ist der Aufruf von URLEncode in "procedure TCustomRESTRequest.Execute". Diese entfernt die Zugangsdaten.
Das lässt sich jedoch verhindern, indem man im Restdebugger in "procedure Tfrm_Main.DoExecuteRequest;" vor dem Execute angibt, dass die URL bereits kodiert ist:

Code:
try
    RestRequest.URLAlreadyEncoded := true;
    RESTRequest.Execute;
  except
Die URL muss man jetzt ggf. selbst kodieren.

Damit funktioniert jetzt der Aufruf der Shopware-API mit dem RestDebugger (zumindest unter Windows).

Der Vollständigkeit halber sei noch erwähnt, dass man alternativ auch im Quellcode von Shopware die Authentifizierungsmethode ändern kann:
https://forum.shopware.com/discussio...tatt-digest/p1

Für die nächste Version gibt es auch ein Ticket dazu:
https://issues.shopware.com/issues/SW-16133
Damit wird hoffentlich auch bald offiziell Basic-Auth umgesetzt
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
136 Beiträge
 
Delphi 10 Seattle Professional
 
#14

AW: Mit Rest-Komponenten auf Shopware-API zugreifen

  Alt 12. Feb 2017, 17:42
Code:
try
    RestRequest.URLAlreadyEncoded := true;
    RESTRequest.Execute;
  except
Das könnte ja fast dasselbe/ähnliche Problem wie bei mir sein:
http://www.delphipraxis.net/191701-t...ml#post1361347

Und jetzt hab ich schon umgebaut
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 09:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf