【问题标题】:Sending JSON object to the server via http GET通过 http GET 将 JSON 对象发送到服务器
【发布时间】:2011-05-20 15:09:00
【问题描述】:

我正在寻找通过 GET 将 JSON 对象发送到服务器。 克里斯对Post an Array of Objects via JSON to ASP.Net MVC3 的回答适用于http POST,但不适用于GET。 我的案例也适用于 POST,但不适用于 GET。我该怎么做才能使 GET 工作 这是我的情况: 在控制器中我有以下方法 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 时,Screenreport(Screentable screendata) 例程中的 screendata 为 null。

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

【问题讨论】:

    标签: json asp.net-mvc-3


    【解决方案1】:

    没有:-) 这不是 get 的工作方式。

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

    (参见 9.3 GET)

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

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

    【讨论】:

    【解决方案2】:

    尝试将方法更改为 public ActionResult Screenreport(HttpRequestMessage request)

    然后使用以下代码获取 JSON 对象。

    数据 = request.RequestUri.Query;
    data = HttpUtility.ParseQueryString(data).Get("request");

    【讨论】:

      【解决方案3】:

      用 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。

      【讨论】:

        猜你喜欢
        • 2016-01-30
        • 2011-09-15
        • 1970-01-01
        • 2013-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多