Ich bin gerade am verzweifeln Ich will einen Post über Indy 10 an https://www.koronacloud.com senden das will nicht. //Dokumentation https://www.koronacloud.com/web/api/v1/{token}/products/save/ POST Add or updates a product request template params token string the api token representations application/json;charset=utf-8 responses status: 200 - OK - Response representations application/json;charset=utf-8 Result containing the new/updated product //Meine Funktion Request="https://www.koronacloud.com/web/api/v1/0132hu6ydfghhoyzttxgj3vj6r501lttqa4v5kqh01ebnp7ba5ziw/products/save/"; Data["number"]="10"; Data["name"]="Artikel x"; json_string = json::Serialize(Data).c_str(); SL = new TStringList(); SL->Add(json_string.c_str()); DataModule1->IdHTTP1->Request->CustomHeaders->Clear(); DataModule1->IdHTTP1->Request->ContentType = "application/json;charset=utf-8"; DataModule1->IdHTTP1->Request->Accept = "application/json"; DataModule1->IdHTTP1->Request->ContentEncoding = "utf-8"; WebResponse = DataModule1->IdHTTP1->Post(Request,SL); Weiss jemand wie ich diesn Post hinkriege Ich erhalte immer Http/1.1 400 bad request
Um welche Programmiersprache handelt es sich denn, ist das C++? Kann man sich die API Beschreibung irgendwo Anschauen ohne sich Anzumelden? Welches OS Nutzt du? Hast du schon versucht mit Tools wie z.B. tcpflow oder wireshark nachzusehen, was genau gesendet wird? Wenn du hier einfach so deinen API Token Postest, kann dann nicht jeder darüber Dateien Hoch und Runterladen?
Hallo Daniel Danke erstmal. Die doku: https://www.koronacloud.com/web/api/v1?_wadl#idm234933736 leider sehr rudimentär. Sprache: c++ OS Windows: 7 Tools tcpflow oder wireshark: Nein Kannte ich noch nicht schon mal ne gute Hilfe API Token Postest: Das Frag ich mich auch aber schau mal die doku an. Der Support kann hier scheinbar nicht helfen.
Einfach mal geraten: Die blocken deine Anfrage, weil du keinen User-Agent mitsendest. Das machen die meisten Seiten um keine Resourcen an schrottige Bots zu verschwenden.
>Die blocken deine Anfrage, weil du keinen User-Agent mitsendest.
Aha geht es genauer
Danke wars aber nicht Ich erhalte HTTP/1.1 400 Bad Request //Der Request stimmt aber Request="https://www.koronacloud.com/web/api/v1/0132hu6yyiqwoyzttxgj3vj6r501lttqa4v5kqh01ebnp7ba5ziw/products/save/"; //Die Parameter als Json Object json::Object Data; Data["number"]=Nr.c_str(); Data["name"]=Name.c_str(); json_string = json::Serialize(Data).c_str(); SL = new TStringList(); SL->Add(json_string.c_str()); DataModule1->IdHTTP1->Request->CustomHeaders->Clear(); DataModule1->IdHTTP1->Request->ContentType = "application/json;charset=utf-8"; DataModule1->IdHTTP1->Request->Accept = "application/json"; DataModule1->IdHTTP1->Request->ContentEncoding = "utf-8"; DataModule1->IdHTTP1->Request->UserAgent = "Office4bakery"; WebResponse = DataModule1->IdHTTP1->Post(Request,SL);
Schau dir doch einen funktionierenden Request mal im Browser an, es kann gut sein das du mindestens noch einen Host-Header senden musst: https://de.wikipedia.org/wiki/Host_Header Also Host: www.koronacloud.com in diesem Falle.
ne will nicht ich erhalte immer 400 Bad Request Mein Request stimmt aber mit dem der Doku überein. Der Service hat ihn mir nochmal geschickt und verglichen -> Identisch Auch der Body stimmt. https://www.koronacloud.com/web/api/v1/0132hu6yyiqwoyzttxgj3vj6r501lttqa4v5kqh01ebnp7ba5ziw/products/save body: {"number": "1337","name": "testImport"}
Muss bei http Post ohne "multipart/form-data" der Inhalt nicht URLencode()t übertragen werden? Das würde den 400er Code erklären...
@Jim Meba Da als Content type bereits application/json;charset=utf-8 gesendet wird, sollte das schon passen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.