Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mit Rest-Komponenten auf Shopware-API zugreifen (https://www.delphipraxis.net/189866-mit-rest-komponenten-auf-shopware-api-zugreifen.html)

Guido R. 3. Aug 2016 12:44

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
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... :wall:

Guido R. 5. Aug 2016 20:47

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
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 :(

gubbe 12. Feb 2017 16:14

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
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

sahimba 12. Feb 2017 16:42

AW: Mit Rest-Komponenten auf Shopware-API zugreifen
 
Zitat:

Zitat von gubbe (Beitrag 1361368)
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 :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.
Seite 2 von 2     12   

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