2017-02-20 3 views
1

Ich habe eine Asp.Net Core Web Application erstellt und bin auf der Suche nach einer Web-API zu implementieren.Asp.net core api bekomme "415 nicht unterstützten Medientyp" Fehler von Javascript, nicht Postman

Ich habe eine funktionelle bekam HttpGet umgesetzt und ich versuche jetzt eine Httppost-Funktion zu implementieren:

[HttpPost] 
    public object Post([FromBody] object data) 
    {    
     return null; 
    } 

ich dies mit Postman getestet haben, die gut funktioniert. Ich habe es mit Json-Objekt im Körper (auf roh und JSON (application/json)) festgelegt.

Ich bekomme die erwartete Antwort.

Aber wenn ich versuche, diesen Code durch Postman (oder meine eigenen Versuche) vorgeschlagen mit von Javascript zu nennen:

var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": "http://localhost:51139/api/data", 
    "method": "POST", 
    "headers": { 
    "content-type": "application/json", 
    "cache-control": "no-cache", 
    "postman-token": "999ee8ee-4e92-acb8-b7cf-144ffa49e5ee" 
    }, 
    "processData": false, 
    "data": "{\"Message\":\"This is body data\"}" 
} 

$.ajax(settings).done(function (response) { 
    console.log(response); 
}); 

Ich bekomme einen „415 Nicht unterstützter Medientyp“ Fehler.

Wer sieht, wo ich falsch liege?

+0

Woher rufen Sie das Javascript? Von einer Seite? Von einer anderen Site? – Max

+0

Ich habe es einfach in einer einfachen HTML-Seite, die ich in einem Browser öffne. Es gibt keinen Webserver oder so etwas. –

+0

Wenn ich den Code von einer Seite auf einem einfachen Webserver ausführen, bekomme ich die gleiche Antwort. –

Antwort

0

Man könnte so etwas wie dieses

[HttpPost] 
public object Post() 
{ 
    Object o = Request.Form.First(o => o.Key == "data").Value 
    return null; 
} 

Dann versuchen Sie, wenn Sie eine Klasse dieses Objekts erstellen, können Sie JsonConvert verwenden können, um das Objekt in das Klassenobjekt deserialisieren, die Sie erstellt haben.

+0

Ich bekomme eine 'System.InvalidOperationException:' Falsche Content-Type: application/json '' Fehler, wenn ich dies versuchte (mit kleinen Korrekturen am Code). –

+0

Versuchen Sie, Ihren Controller mit [Produces ("application/json")] zu dekorieren. Stellen Sie dann sicher, dass Sie ein C# -Modell erstellt haben, anstatt ein generisches Objekt zu verwenden. Dies ist wahrscheinlich fehlgeschlagen, weil .net nicht in der Lage ist, Ihr Modell mit dem empfangenen zu binden. Also zur Erinnerung, behalten Sie Ihren Code gleich, aber erstellen Sie ein C# -Modell Ihrer Daten und dekorieren Sie es mit dem [Produziert ("application/json")]. Hoffe, das hilft – Harry

Verwandte Themen