1

Я пытаюсь передать объект JSON из запроса POST с помощью машинописного текста в метод Web API. Fiddler показывает, что объект был преобразован в JSON, а Content-Type - «application/JSON». Но в контроллере API значение параметра отображает значение null вместо JSON.POST из API машинописного API, неспособного передать объект JSON

Машинопись:

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] общественного асинхронной Task CreatePOInMO ([FromBody] строка продукта) { возвратного Ok(); }

продукт содержит null. Если я передаю фактическое значение внутри объекта продукта из машинописного текста (который является JSON), он работает. Но я не могу это сделать так жестко.

Я следил за этой должности: Angular2 Service not passing JSON to WebAPI Но похоже, что я делаю то, что упоминается здесь.

+0

Вы можете оставить конфигурацию WEB-API? Я полагаю, что JSON-конвертер не ожидает формат JSON так же, как стандартный JSON, например, у меня была аналогичная проблема с отправкой {name: 'test'} из front end и ожидаемого класса в be было {Name: 'test '} из-за верблюжьего случая стандартный конвертер WEB-API не смог перевести ответ. также может быть полезным запрос – Nicu

ответ

3

В Угловое 2, когда posting JSON with the Http client, вы не должны вызывать JSON.stringify:

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

Изменено: var POCartItems = JSON.stringify (продукт); вернуть this._http.post (this._creatPOUrl, POCartItems, опционы) и на Web API: [HttpPost] общественного асинхронной Task CreatePOInMO ([FromBody] строка POCartItems) До сих пор не работает. – namrata

+0

Я не уверен, что вы имеете в виду. Вызов 'JSON.stringify' не требуется. Посмотрите связанную документацию/руководство. – cartant