C # [HttpPost] строковое значение через угловой http.post становится нулевым - PullRequest
1 голос
/ 28 марта 2019

Мой метод записи C # выглядит

[HttpPost]
public void mymethod(string id) {...}

Я пытаюсь опубликовать строковое значение из углового http.post, как это, но значение достигает метода C # как ноль.

const mystr = 'mystring';
this.http.post('myurl', mystr);

Что я пробовал

{id: mystr}
JSON.stringify({id: mystr})

Примечание: отправка значения id с помощью [HttpGet("{id}")] работает хорошо, но mystr может содержать значение '/', поэтому происходит сбой всякий раз, когда '/' содержит.

Когда я заменяю подпись mymethod на ([FromBody] string id), я получаю 400 Bad Request.

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

не могли бы вы попробовать изменить способ отправки с угловой, как показано ниже

const headers = new HttpHeaders({ 'Content-Type': 'application/json' });

this.http.post('myurl', 'string value', { headers: headers }) ;

если «applicationaiton / json» не работает, попробуйте изменить его на «application / x-www-form-urlencoded»

0 голосов
/ 28 марта 2019

Используйте encodeValue на mystr на угловой. В C # API id вы должны получить декодированное значение.

https://angular.io/api/common/http/HttpUrlEncodingCodec

0 голосов
/ 28 марта 2019

для вашего сценария требуется небольшое изменение, просто предоставьте Model данных, которые вы хотите получить в запросе POST.Что-то вроде: -

public class CustomData {
   string id {get; set;}
}

, а затем настройте ваш API и дайте ему понять, что он должен получить что-то из request's body

Итак, вместо

[HttpPost]
public void mymethod(string id) {...}

используйте это

[HttpPost]
public void mymethod([FromBody] CustomData data) {...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...