Произошла ошибка 404
not found из-за привязки параметра Query String по умолчанию для вашего метода API
. Когда вы указываете два параметра, а именно body
и number
, маршрут по умолчанию, который вы указали в методе API
с вашими параметрами, правильно вызывает API (который является вашим вторым URL).
Если если вы хотите POST
ваших значений без использования метода Query String, вы можете использовать атрибут FromBody
, который указывает, что параметр или свойство должны быть связаны с использованием тела запроса. При использовании атрибута FromBody
вы указываете, что данные поступают из тела тела запроса, а не из URL-адреса запроса. Вы не можете использовать этот атрибут с HttpGet
запросами, только с PUT
, POST
и DELETE
запросами. Также вы можете использовать только один тег атрибута FromBody
для каждого метода действия в Web API.
Теперь вы не можете связать одну примитивную строку, используя JSON
и FromBody
. Ваш API будет ожидать сложный объект (модель) от вашего JSON
. Если вы хотите отправить только одну строку, вы можете использовать URL-кодировку. В заголовке вашего запроса укажите
Content-Type: application/x-www-form-urlencoded
Но правильным способом было бы создать структуру Model
для ваших значений и затем отправить их на ваш API
:
Создать модель и используйте это вместо этого.
Образец JSON тело во время запроса: {"body":"example","number":"1"}
C# Модель:
public class MyModel {
public string body {get;set;}
public string number {get;set}
}
Метод контроллера
[HttpPost]
[Route("sms")]
public HttpResponseMessage SendMessage([FromBody]MyModel model)
{
//Get your model values here
string mybody=model.body;
string mynumber=model.number;
return Request.CreateResponse(HttpStatusCode.OK,body);
}