Moin,
wir nutzen Web-Requests um Bestellungen in ein internes System zu übertragen, hierzu haben wir uns eine eigene Rest-API mit einfacher Auth via Token gebaut. Die Daten übertragen wir als JSON. Folgend sehen die Web-Request Workflows aus:
Wie schon angesprochen nicht "Web-Request (POST)" nutzen, sondern "Web-Request" und dann die Method auf "POST" stellen.
URL
Code:
https://xxx.de/api/punkt1
Header
Code:
Authorization: deinToken
Content-Type:application/json
Die Felder im Header einfach durch neue Zeilen trennen, ein Trennzeichen o.Ä. ist nicht nötig. Eine Authorization mit O-Auth2 o.Ä. ist meines Erachtens nicht möglich, da hierzu allein schon Werte in der
Wawi gespeichert werden müssten. Also mit einfachen Token oder Bearer Token vorlieb nehmen.
Body, der eigentliche Knackpunkt
Code:
json={
"cExterneAuftragsnummer":"",
"support":"true",
"cBestellNr":"",
"bestellPositions":[],
"anzahl":"0",
"istBezahlt":"false"
}
Der Request enthält diverse Infos und hängt den eigenen Body dann noch unten dran. Zu Testzwecken kann man die Request auch einfach wieder als Text zurückschicken und im
Workflow den Haken bei "Wert setzen" setzen und eine Variable zum speichern aussuchen. Ist zumindest eine Recht einfache Art zu sehen was da gesandt wird. Ein
Log in der API ist ansonsten natürlich der bessere Weg.
So werte ich den Body aus
Code:
$cache = substr($request,strripos($request,'json=')+5,strlen($request)-strripos($request,'json='));
$cache = json_decode($cache,true);
$request enhält den Body der Request. Ich entferne den gesamten Body bis hinter das "=" meines "json=". Somit bleibt nur noch die eigentliche JSON und kann normal dekodiert werden.
Möglicherweise gibt es bessere Wege an die Daten im Request zu kommen, so funktionierts bei uns aber nun schon eine Weile.
Grüße
EDIT:
Hab grad eine Request mal hier
Code:
POST /api/orderLog HTTP/1.0
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
Accept-Encoding: gzip, deflate
Authorization: MEINTOKEN
Connection: close
Content-Length: 176
Content-Type: application/json
Host: xx.xxx.de
User-Agent: RestSharp/x.x.x.x
X-Accel-Internal: /internal-nginx-static-location
X-Real-Ip: x.x.x.x
json={
"cBestellNr":"129814",
"cKundenNr":"151040",
"cInetBestellNr":"xxx-xxxxx-xxxx",
"dAuftragErstellt":"25.01.2021 00:38:33",
"amount":"1",
"isSupport":"false"
}