通过http GET发送JSON对象到服务器
我正在寻找通过 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 对象,它可以工作,但如果我像我描述的那样发送一个数组(列表),它就不行。 我想做的事情可行吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不 :-)
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.
尝试将方法更改为 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");
在 Javascript 中尝试这个示例:
现在您可以将此 URL 转发到您的服务器。我知道这不是任何 .NET 语言的,但你绝对可以找到使用的等效方法,或者直接使用 JS。
Try this example in Javascript:
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.