Ich versuche, eine JSON-Zeichenfolge von meiner eckigen App zu einer Web-API zu bekommen. Ich habe in den letzten 6 Stunden im ganzen Internet nachgesehen und versucht, kläglich zu versagen, um herauszufinden, was ich falsch mache.
Ich habe die Netzwerkkonsole überprüft, und ich kann den JSON als Formulardaten sehen, aber mein WEB-API bekommt ihn aus irgendeinem Grund NICHT. Ich habe mir verschiedene andere Beiträge angeschaut, aber keine scheint mir bei meinem speziellen Problem geholfen zu haben. Jede Richtung wäre großartig. Ich habe bereits versucht, die "Transformation" zu verwenden, aber das hat nicht geholfen.
EINGABEPUNKTE ZUR WEB-API
%Vor%ANGULARRUF
%Vor%BEARBEITEN: Ich änderte den Winkelaufruf zu diesem
%Vor%Die Web-API sieht so aus
%Vor%Und das Modell
%Vor%Ich bekomme immer noch einen Nullwert für DATA, etwas, das ich falsch eingerichtet habe?
Ich glaube, Ihr Problem hängt von der WebApi-Controller-Methode ab, die erwartet, dass Sie eine Zeichenfolge erhalten, die Sie jedoch an ein Objekt übergeben. Trifft es zumindest die Methode, empfängt aber null?
Es hängt davon ab, was Sie an die WebApi-Controller-Methode senden möchten. Wenn Sie jedoch ein Objekt senden möchten, sollten Sie ein Modell erstellen, das dieses Objekt in Ihrem WebApi-Projekt darstellt, und die Methode ein Objekt als Parameter annehmen lassen.
Zum Beispiel, so wie Sie es jetzt haben, würden Sie etwas tun wie:
%Vor% Obwohl Sie eine Lösung haben, gibt es einige Möglichkeiten zu POST
einfache string
Daten (kein Objekt) zu Web API
Service.
Nehmen wir an, Sie haben eine POST-API wie diese (in Test ApiController)
%Vor% Von AngularJS
können Sie wie
(1) Daten als JSON
(Standard)
Dies wird Content-Type: application/json
standardmäßig verwenden. Und der Server behandelt die Daten als JSON. Wenn Sie sich die Anfrage ansehen, sehen Sie, dass der Anfragetext eine einfache Zeichenfolge ist, wie
Für komplexe Objekte würden sie JSON-formatiert angezeigt.
(2) Daten als application/x-www-form-urlencoded
(wie in Ihrem Beispiel)
Hier geben wir den Inhaltstyp explizit als application/x-www-form-urlencoded
an, also müssen wir Daten in diesem Format senden (ähnlich der URL-Abfragezeichenfolge). Und hier ist der leere Schlüssel in den Daten , nur um die seltsame Modellbindungsanforderung von Web API
zu erfüllen! Die resultierenden Daten werden wie
was wir mit $.param({ "": "test" })
gemacht haben. Ein Grund dafür ist, dass FromBody
hauptsächlich verwendet wird, um object
, nicht einfache primitive Werte zu senden.
Also, das grundlegende Problem mit Ihrem Code war, Sie hatten Inhaltstyp angegeben: application / x-www-form-urlencoded und Sie sendeten die Daten als < em> JSON!
Tags und Links asp.net-web-api angularjs c# web-services http-post