通过http GET将JSON对象发送到服务器

时间:2011-05-20 15:09:00

标签: json asp.net-mvc-3

我正在寻找通过GET将JSON对象发送到服务器。 Chris对Post an Array of Objects via JSON to ASP.Net MVC3的回答适用于http POST,但不适用于GET。 我的情况也适用于POST但不适用于GET。我该怎么做才能让GET工作 这是我的情况: 在Controller中我有以下方法        public ActionResult Screenreport(Screentable screendata)

   {
       // do something here
       return View();
   }

我有两个ModelView如下:

   public class Screenrecord
   {
      public string Firstname{ get; set; }
      public string Lastname{ get; set; }
   }
   public class Screentable
   {
      public List<Screenrecord> Screenlist { get; set; } 
   }

在客户端,我生成JSON对象

var Screentable = { Screenlist: screendata };

screendata是一个Screenrecord数组

当我使用POST时所有这些工作,但是当我使用GET时,我得到空值(screendata = null)控制器的方法。 换句话说,当单击GO时,屏幕截图(Screentable screendata)例程中的screendata为空。

另外,如果我发送一个JSON对象它可以工作,但如果我像我描述的那样发送一个数组(列表),它就不会。 我想做的是可行的吗?

3 个答案:

答案 0 :(得分:10)

否:-) 那不是如何运作。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

(见9.3 GET)

“GET方法意味着检索任何信息(以实体的形式)由Request-URI标识”

Request-URI是这里的重要部分。 GET 请求中没有正文数据的概念。

答案 1 :(得分:0)

尝试将方法更改为公共ActionResult Screenreport(HttpRequestMessage请求)

然后使用下面的代码来获取JSON对象。

data = request.RequestUri.Query;
data = HttpUtility.ParseQueryString(data).Get(“request”);

答案 2 :(得分:0)

在Javascript中尝试此示例:

var someObject = {
   id:123456,
   message:"my message",
}

var objStr = JSON.stringify(someObject);

var escapedObjStr = encodeURIComponent(objStr);

var getUrlStr = "http://myserver:port?json="+escapedObjStr

现在您可以将此URL转发到您的服务器。我知道这不是任何.NET语言,但你绝对可以找到使用的等效方法,或者只是立即使用JS。