Entwickler-Ecke
ASP.NET und Web - Kein Content bei ApiController GET
doublecross - Di 12.11.19 10:23
Titel: Kein Content bei ApiController GET
Hallo,
irgendwo muss ich einen ganz blöden Fehler machen, den ich nicht sehe, vielleicht könnt Ihr mir die Augen offen.
Ich möchte eine kleine WebAPI entwickeln, welche per JavaScrippt genutzt werden soll. Da beide Teile auf dem gleichen Integrierten System laufen sollen, bin ich auf das .NET Framework 4.0 einen Webbrowser (integriert in eine Fremdanwendung) beschränkt, dessen Fähigkeiten irgendwo zwischen dem IE8 und IE 11 liegen. Features die weniger als 10 Jahre alt sind lassen sich also nicht nutzen.
Daher sieht meine JS Implementation, welche meine eigene SendMessage Funktion aufrufen soll so aus:
JavaScript-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function SendMessage(Receiver, Message) { let Adress = "http://" + BASEADRESS + "/api/messages/send"; let Data = { 'clientid': APICLIENTID, 'receiver': Receiver, 'message': Message }; let request = new XMLHttpRequest(); request.open("GET", Adress, false); request.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); request.send(JSON.stringify(Data)); return request.responseText; } |
Auf Server Seite nutze ich einen
HttpSelfHostServer und implementiere im
MessagesController diese Get Methoden:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public HttpResponseMessage Get(string command, string id, [FromBody] JObject Data) { {...} }
public HttpResponseMessage Get(string command, [FromBody] JObject Data) { return Get(command, string.Empty, Data); } |
Wenn ich einen Breakpoint in diese setze kann ich erkennen, dass sie auch aufgerufen werden, allerdings muss ich auch erkennen, dass der Parameter
Data leer bleibt. Dies übrigens auch denn ich den Datentypt auf string setze. Auch beim untersuchen der Request Eigenschaft des
ApiController wird mir angezeigt, dass der content leer ist.
Ich versehe nur nicht warum. Habt ihr eine Idee?
doublecross - Mi 13.11.19 08:57
Zwischenstand:
Ich habe mit die Kommunikation zwischen Server und JavaSkript Client einmal mittels WireShark angesehen (siehe unten). Interessant finde ich, dass ich auch hier den Inhalt des Bodys nicht finde.
Nach meinem Verständnis sollen sich in der Übertragung zumindest Schlüsselworte wie "clientid" oder "message" finden lassen, eben das was die Anweisung
JSON.stringify(Data) zurück gibt (und das sie ein Ergebnis liefert habe ich per
console.log() ausgabe überprüft).
Somit scheint mir das Problem auf JavaSkript Seite zu liegen. Nur sehe ich auch hier nicht was ich falsch mache. Laut
Dokumentation [
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send] sollte das doch genau so funktionieren.
Ralf Jansen - Mi 13.11.19 10:55
Möglicherweise unterdrückt XMLHttpRequest den Body. Ein GET hat üblicherweise keinen Body.
doublecross - Do 14.11.19 15:14
Hallo Ihr beiden und ganz herzlichen dank.
Ich sagte doch, dass ich einen ganz blöden Fehler machen muss, und genau der war es. Sprich mit Post klappt alles. Dankeschön!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!