Post JSON-string zum WEB-API
Ich habe eine ASP.NET WEB-API 2
app-Hexe braucht, um eine POST
Methode akzeptiert eine JOSN
string
mit unbekannter Struktur von javascript
.
Ich konnte cors
und GET
Methoden funktioniert einwandfrei, jedoch beim senden JSON
von der client-api-Methode parameter ist immer null
.
Dies ist mein api
Methode:
//parameters i tried:
//[FromBody]string model
//[FromBody]dynamic model
//dynamic model
public HttpResponseMessage Post(string model)
{
return new HttpResponseMessage()
{
Content = new StringContent("POST: Test message: " + model)
};
}
und meine client-Methode:
function sendRequest()
{
var Test = {"Name":"some name"};
var method = $('#method').val();
$.ajax({
type: method,
url: serviceUrl,
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(Test)
}).done(function (data)
{
$('#value1').text(data);
}).error(function (jqXHR, textStatus, errorThrown)
{
$('#value1').text(jqXHR.responseText || textStatus);
});
}
Also die Frage ist, wie kann ich eine unbekannte JSON string
aus javascript
und akzeptieren es wie ein string in meiner api
Methode?
- versuchen
data: {model :JSON.stringify(Test)}
- das gibt mir ein
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource
Fehlermeldung - Nicht JSON.stringify. Verwendung von Daten: {value: Test} und in Ihrer Steuerung ([FromBody]string-Test). Das sollte einen string zurückgeben.
- Nicht verwenden, JOSN contentType. Nur nach einem string mit json-format, dann verwenden Sie JsonConvert.DeserializeObject zu konvertieren, um Ihre erwartete Objekt.
- habe versucht, aber ich bekomme immer noch einen null-Wert
- habe versucht, aber ich bekomme immer noch einen null-Wert
- überprüfen Sie meine Antwort unten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeitete ich den code und es funktioniert gut.
Einen [FromBody] - Attribut gibt an, dass ein action-parameter kommt nur aus der entity-body der eingehenden HTTPRequestMessage.
Entweder behandeln Sie die POST-Anforderung eine generische HTTP-Anforderung, und manuell analysieren den Körper:
Oder verwenden Sie eine generische JToken, und lassen Sie den serializer erledigen den rest:
Hinweise: auf diese Weise brauchen Sie nicht zu verändern, client-side code, weil du noch Posten json-Daten, nicht eine generische Zeichenfolge ein, die semantisch die richtige Wahl, wenn Sie erwarten, dass Ihre Kunden zu post serialisierte JSON-Objekte.
Referenzen:
http://bizcoder.com/posting-raw-json-to-web-api