Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Delphi Senden zu Shopware REST API mit idHTTP (https://www.delphipraxis.net/192250-delphi-senden-zu-shopware-rest-api-mit-idhttp.html)

GiuStyler 3. Apr 2017 12:25

Delphi Senden zu Shopware REST API mit idHTTP
 
Hallo Leute,
ich bin aktuell am verzweifeln. Ich versuche mittels Delphi eine API für Shopware zu machen, damit ich Daten Senden kann.
Abrufen kann ich die Daten mittels IdHTTP.get. Nun versuche ich mittels IdHTTP.put zu Senden, aber dauernd bekomme ich die Meldung 503 Service Unavailable.

Entweder der Fehler ist sehr einfach und ich seh den nicht oder irgendwas anderes stellt sich quer.

PS: Aktuell läuft alles über localhost zu Testzwecken.

Folgende Codebausteine habe ich aktuell

Code:
procedure TFormErsatzteilshopTool.Auth(Sender: TObject; Authentication: TIdAuthentication; var Handled: Boolean);
const
    ls_apiuser = 'ApiName';
    ls_apikey  = 'ApiKey';
begin
  if not(Sender is TIdHTTP) then
  exit;
  Authentication.Username := ls_apiuser;
  Authentication.Password := ls_apikey;
  if Authentication is TIdDigestAuthentication then
  begin
    with Authentication as TIdDigestAuthentication do
    begin
      Uri := (Sender as TIdHTTP).Request.URL;
      Method := (Sender as TIdHTTP).Request.Method;
    end;
  end;
  Handled := True;
end;
Code:
procedure TFormErsatzteilshopTool.AuthPut(Sender: TObject);
var
  s              : String;
  IdHTTP1         : TIdHTTP;
  ResponseStream : TStringStream;
const
    ls_useragent = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0';
    ls_url      = 'http://localhost/Shopware_CE/api/articles';
    ls_language = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
begin
  IdHTTP1 := TIdHTTP.Create();
  try
    IdHTTP1.OnAuthorization := Auth;

    IdHTTP1.HTTPOptions := [hoInProcessAuth];
    IdHTTP1.Request.UserAgent := ls_useragent;
    IdHTTP1.Request.URL := ls_url;
    IdHTTP1.Request.AcceptLanguage := ls_language;

    s := Memo2.Text;

    ResponseStream := TStringStream.Create(s);

    s := idHTTP1.Put(ls_url, ResponseStream); //Datei senden

    Memo2.Lines.Add(s);
  finally
    IdHTTP1.Free;
  end;
end;
Wo ist mein Fehler? Ich habe keine Idee mehr. Auch Google hilft nicht wirklich. Andere die ähnliche Fehler hatten waren Leider nicht die Lösung bei mir.

PS: Die Daten gebe ich manuell ein, da es fürs Testen schneller geht. Die Daten werden in JSON-Format übermitteln. Folgendes gebe ich ein {"name":"Test"}. Die Schreibweise sollte richtig sein.

Union 3. Apr 2017 13:16

AW: Delphi Senden zu Shopware REST API mit idHTTP
 
Vielleicht solltest Du auch alle Pflichtfelder / Objekte füllen? "name" reicht wohl nicht aus. Siehe hier

GiuStyler 3. Apr 2017 13:40

AW: Delphi Senden zu Shopware REST API mit idHTTP
 
Funktioniert auch nicht. Gleiche Fehlermeldung.

Tyrolean 4. Apr 2017 05:13

AW: Delphi Senden zu Shopware REST API mit idHTTP
 
Zitat:

Zitat von GiuStyler (Beitrag 1366266)
Funktioniert auch nicht. Gleiche Fehlermeldung.

Entferne mal bei Daten, die du mit PUT sendest alle Zeilenschaltungen (#13 und #10)
Vielleicht liegt es ja daran. Kommt im Response vielleicht die richtige Fehlermeldung mit?

Und zum Testen von sowas habe ich immer gerne den PostMan von Chrome verwendet.
Oder wenns im Internet erreichbar ist Requestmaker.com

Da kann man schön damit spielen


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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