如何在MVC上检索JsonObject数据

时间:2015-09-28 03:41:11

标签: android json model-view-controller jsonobject

我有一个Android应用程序,它将jsonobject发送到服务器,如下所示:

        JSONObject jsonParam = new JSONObject();
        jsonParam.put("snc", serialClient);
        jsonParam.put("code", hashString(pwd + serialClient));

        printout = new DataOutputStream(urlConn.getOutputStream());
        String str = jsonParam.toString();
        byte[] data = str.getBytes("UTF-8");
        printout.write(data);
        printout.flush();
        printout.close ();

MVC控制器如下:

<System.Web.Http.AcceptVerbs("Post")> _
Public Function Android_Index(ByVal data As String) As ActionResult
    Dim param As Dictionary(Of String, String) = JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(data)

    For Each p In param
        LogEntry(p.Key & vbCrLf & p.Value, 0, "test")
    Next

    Return RedirectToLocal("/UI/Forbidden")
End Function

但我收到数据为空 - 无元素对象。请帮助找出我出错的地方,我该如何解决?

更新

我尝试创建一个MVC类如下:

Public Class SNC
    Public snc As String
    Public code As String
End Class

按照以下步骤编辑控制器:

Public Function Android_Index(ByVal data As SNC) As ActionResult
    LogEntry(data.snc, 0, "test")
    LogEntry(data.code, 0, "test")

    ......
End Function

当Android应用程序尝试发送jsonobject时,我可以确认Android_Index已被命中。所以我假设jsonobject应该在“data”参数中被接受。但是“snc”和“code”都是空白字符串。虽然我从android重新检查了作为jsonobject发送的“snc”和“code”都不是空的。目前,似乎问题出在android方面。或者mvc应该接受的方式不正确?

1 个答案:

答案 0 :(得分:0)

在没有任何事情的情况下,最后我可以使它发挥作用。

问题出在java方面:

首先,我必须将jsonobject分配给一个键,如下所示:

JSONObject jsonParam = new JSONObject();
jsonParam.put("snc", serialClient);
jsonParam.put("code", hashString(pwd + serialClient));
String param = "data=" + jsonParam.toString(); //assign jsonParam to identifier

然后将Content-Type设置为application / x-www-form-urlencoded。 后期数据最终由控制器正确捕获。