1

Ich versuche ein JSON-Objekt von einem POST-Aufruf eines Typoskripts an eine Web-API-Methode zu übergeben. Fiddler zeigt, dass das Objekt in JSON konvertiert wurde und der Inhaltstyp "Anwendung/JSON" lautet. Am API-Controller zeigt der Parameter null anstelle von JSON an.POST von Typescript zu Web API API, kein JSON-Objekt übergeben

Typoskript:

createPO(product: string): Promise<string> { 
    var headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 
    let options = new RequestOptions({ headers: headers }); 
    return this._http.post(this._creatPOUrl, JSON.stringify(product), options) 
    .toPromise() 
    .then(response => <string>response.statusText) 
    .catch(this.handleError); 
    } 

Web API: [Httppost] öffentlichen async Aufgabe CreatePOInMO ([FromBody] string Produkt) { return Ok(); }

Produkt enthält null. Wenn ich den tatsächlichen Wert innerhalb des Produktobjekts aus Typoskript (das ein JSON ist) übergeben, funktioniert es. Aber ich kann nicht so hart codieren.

Ich folgte diesem Beitrag: Angular2 Service not passing JSON to WebAPI Aber es sieht aus wie ich mache, was auch immer hier erwähnt wird.

+0

können Sie Ihre Web-API-Konfiguration schreiben? Ich nehme an, dass der JSON-Konverter das JSON-Format nicht wie das Standard-JSON erwartet. Zum Beispiel hatte ich ein ähnliches Problem mit {name: 'test'} vom Frontend und der erwarteten Klasse im be {Name: 'Test '} Wegen des Kamelfalles konnte der WEB-API Standardkonverter die Antwort nicht übersetzen. auch eine Anfrage könnte hilfreich sein – Nicu

Antwort

3

In Angular 2, wenn posting JSON with the Http client, sollten Sie nicht JSON.stringify nennen:

this._http.post(this._creatPOUrl, product, options) 
+0

Geändert zu: var POCartItems = JSON.stringify (product); this._http.post (this._creatPOUrl, POCartItems, Optionen) und Web API zurück: [Httppost] public async Aufgabe CreatePOInMO ([FromBody] string POCartItems) immer noch nicht funktioniert. – namrata

+0

Ich bin mir nicht sicher, was du meinst. Der Aufruf "JSON.stringify" ist nicht erforderlich. Sehen Sie sich die verlinkte Dokumentation/Anleitung an. – cartant

Verwandte Themen