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

发布于 2024-11-08 06:05:27 字数 1052 浏览 0 评论 0 原文

我正在寻找通过 GET 将 JSON 对象发送到服务器。 Chris 对 通过 JSON 发布对象数组的回答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 时我得到 null 值 (screendata = null)控制器的方法。 换句话说,当单击 GO 时,Screenreport(Screentable screendata) 例程中的 screendata 为空。

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

I am looking for sending JSON object to the server via GET.
Chris's answer on Post an Array of Objects via JSON to ASP.Net MVC3 works for the http POST but not for GET.
My case also works for POST but not for GET. What can I do to make GET work
Here is my case:
in Controller I have the following method
public ActionResult Screenreport(Screentable screendata)

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

I have two ModelView as follows:

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

On the client side I generate JSON object

var Screentable = { Screenlist: screendata };

screendata is an array of Screenrecord

All this work when I use POST but when I use GET I am getting null value (screendata = null) Controllers' method.
In other word when click GO, screendata is null in Screenreport(Screentable screendata) routine.

Also, if I send one JSON object it works but if I send an array (list) like I described, it does not.
Is what I am trying to do doable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

总以为 2024-11-15 06:05:27

不 :-)
get 不是这样工作的。

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

(参见 9.3 GET)

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

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

No :-)
Thats not how get works.

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

(see 9.3 GET)

"The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI"

Request-URI being the important part here. There is no concept of body data in a GET request.

够钟 2024-11-15 06:05:27

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

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

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

Try changing method to public ActionResult Screenreport(HttpRequestMessage request)

Then use below code to get JSON object.

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

树深时见影 2024-11-15 06:05:27

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

Try this example in Javascript:

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

var objStr = JSON.stringify(someObject);

var escapedObjStr = encodeURIComponent(objStr);

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

and now you can forward this URL to your server. I know this is not in any .NET language but you can definitely find the equivalent methods used, or just use the JS right away.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文