繁体   English   中英

如何将JSON从Android传递到MVC控制器?

[英]How to pass JSON from Android to MVC controller?

在我的最新项目中,我希望用户在Android手机上输入名称和密码,将其保存为JSON格式,然后将其发布到ASP.NET MVC服务器,该服务器应以新的JSON返回配置数据。

到目前为止,我有:

Android(部分代码):

String json = "{\"x\": \"val1\",\"y\":\"val2\"}";
URL url = new URL("http://xxxxx/Home/GetData");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(10000);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");      // have tried without this
conn.setRequestProperty("Content-Length", json.getBytes().length + "");
conn.setDoOutput(true);

os = conn.getOutputStream();
os.write(json.getBytes("UTF-8"));
os.close();

conn.connect();

此处的json字符串仅供测试。

MVC:

[HttpPost]
public ActionResult GetData(String request)
{
    Debug.WriteLine(request.Length); // not relevant to the question

    var data = new { Name = "Test", Age = "39" };
    return Json(data);
}

返回带有测试数据的JSON。

MVC控制器中的string参数在这里可能是错误的。 我尝试接受例如byte [],但是我总是以NULL结尾。

对此有任何帮助或建议的替代方法!

干杯

如果这是要发布到服务器的内容:

{
  "x": "val1",
  "y": "val2"
}

然后,方法参数应反映那些键/值对。 像这样:

public ActionResult GetData(string x, string y)

这将遍历您在json中发布的所有内容。 Prettu非常类似于@David,但是当您不知道将什么发送到GetData

public ActionResult GetData()
{
    foreach (var key in Request.Form.AllKeys)
    {
        //This will iterate through everything in your post data
        var value = Request.Form[key];
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM