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.