我有一个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应该接受的方式不正确?
答案 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。 后期数据最终由控制器正确捕获。