Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Web api not supporting POST method

In my web api controller i have a function with following codes

       [HttpPost]         public HttpResponseMessage Post(string schooltypeName)         {             _schoolTypeService.RegisterSchoolType(schooltypeName);              var message = Request.CreateResponse(HttpStatusCode.Created);              return message;         } 

When i am calling with fiddler i am getting this error

{"Message":"The requested resource does not support http method 'POST'."} 

my fiddling parameters are

Header

User-Agent: Fiddler  Host: myhost:8823  Content-Type: application/json; charset=utf-8  Content-Length: 26 

Request body

{"schooltypeName":"Aided"} 

Requesting url are

http://myhost:8823/SchoolType 

( i configured url ,GET is working with this url)

Whats wrong here ?

like image 734
Binson Eldhose Avatar asked Feb 01 '14 06:02

Binson Eldhose


People also ask

What is API POST method?

POST. In web services, POST requests are used to send data to the API server to create or update a resource. The data sent to the server is stored in the request body of the HTTP request. The simplest example is a contact form on a website.


2 Answers

Change your action to be like Post([FromBody]string schooltypeName) as by default string type is expected to come Uri.

Updated:
Change your body to just "Aided" as currently you would need a class to make the deserialiation work otherwise (ex:class School { public string SchoolTypeName { get; set; } }

like image 151
Kiran Avatar answered Oct 08 '22 03:10

Kiran


See the using namespace at the top of the controller, if you're using System.Web.Mvc, then this problem might be occurred:

Use this:

using System.Web.Http; 
like image 40
Sohail xIN3N Avatar answered Oct 08 '22 02:10

Sohail xIN3N