GET请求有效,如何使POST工作呢?

时间:2012-10-16 17:05:09

标签: http c#-4.0 post asp.net-mvc-4 asp.net-web-api

我有MVC-4 Web-API服务器,我需要“手动”创建HTTP客户端(通过TCP)与它通信。

public class UpdateUnitDetailsController : ApiController
{
    // GET api/updateunitdetails
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/updateunitdetails/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/updateunitdetails
    public void Post([FromBody]string value)
    {
    }

    // POST api/updateunitdetails
    public void Post()
    {
    }

    // PUT api/updateunitdetails/5
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/updateunitdetails/5
    public void Delete(int id)
    {
    }
}

我创建了一个简单的客户端,并在服务器的控制器方法中设置了断点。在客户端,我发送:

GET /api/updateunitdetails HTTP/1.1
Host: localhost:58743

Content-Type: */*
Content-Length: 10

home=sweet

它有效(调试器在Get方法中停止)。但是,如果我将GET更改为POST,则不会。此外,每当我发出POST请求时,我都会在Visual Studio控制台中看到此消息:

A first chance exception of type 'System.InvalidOperationException' occurred in System.Web.Http.dll

我想念什么?

1 个答案:

答案 0 :(得分:0)

请改用:

POST /api/updateunitdetails HTTP/1.1
Host: localhost:58743

Content-Type: application/x-www-form-urlencoded


=sweet