将HTTPPost请求中的JSON数据从Java传递到ASP.NET MVC

将HTTPPost请求中的JSON数据从Java传递到ASP.NET MVC,java,android,asp.net-mvc,Java,Android,Asp.net Mvc,我正在用Java构建一个Android应用程序,我在ASP.NETMVC应用程序中有一个网站/REST服务。我试图使用Java HttpClient发出HttpPost请求,并在http请求中以JSON格式传递对象,但它们没有显示在MVC REST服务的控制器中。当我运行应用程序并从Java发出请求时,它会在MVC应用程序中中断,我会检查HttpContext.request和Params字段是否为空,QueryString是否为空,我查看的所有其他地方它只显示“application/json

我正在用Java构建一个Android应用程序,我在ASP.NETMVC应用程序中有一个网站/REST服务。我试图使用Java HttpClient发出HttpPost请求,并在http请求中以JSON格式传递对象,但它们没有显示在MVC REST服务的控制器中。当我运行应用程序并从Java发出请求时,它会在MVC应用程序中中断,我会检查HttpContext.request和Params字段是否为空,QueryString是否为空,我查看的所有其他地方它只显示“application/json”,但没有任何参数。有人有什么想法吗?我已经学习了一些教程,这些教程演示了如何使用JSONObject的StringEntity设置实体,但这也不起作用。如果我通常传入参数,例如“http://www.url.com?name=mike&number=1“这很有效,我在MVC控制器中获取数据。有没有人有类似的教程或者可以帮助我编写代码

如果您使用的是ASP.NET MVC 3,那么已经有一个内置的
JsonValueProviderFactory
,它允许您使用JSON直接调用操作。如果您使用的是旧版本,您可以自己实现一个。查看以查看预期的确切导线格式

假设您有以下模型:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
您希望调用以下控制器操作,并从JSON请求中自动填充参数:

[HttpPost]
public ActionResult Index(Person p)
{
    ...
}
您可以发送以下POST请求:

POST /home/index HTTP/1.1
Host: 127.0.0.1:4569
Accept: application/json, text/javascript, */*
ContentType: application/json; charset=utf-8
Content-Length: 40
Connection: close

{"FirstName":"John", "LastName":"Smith"}