Einzelnen Beitrag anzeigen

GiuStyler

Registriert seit: 28. Mär 2017
2 Beiträge
 
#1

Delphi Senden zu Shopware REST API mit idHTTP

  Alt 3. Apr 2017, 13:25
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.
  Mit Zitat antworten Zitat