从Django服务器返回有效JSON的Android客户端错误

时间:2012-04-30 05:11:11

标签: android django json

我希望有人可以帮助我。

我有一个将JSON返回给iOS应用程序的Django服务器。在Django服务器上,我们正在使用

return HttpResponse(json.dumps(session_dict),mime_type)

将JSON返回给客户端(通过Wireshark)

2f中 {“session”:“bcb493fb21ae8fcd9152e1924b3e5d9a”} 0

此响应在某种程度上对iOS应用程序有效,可以由iOS JSON客户端库进行解析。这对我来说看起来不像Json有效,所以我很惊讶它有效。

但是,如果我在Android中使用以下内容,则会收到错误消息:

java.lang.String类型的值会话无法转换为JSONObject。

jsonObjSend.put("username", strUserName);
                jsonObjSend.put("password", strPassword);

                 Add a nested JSONObject (e.g. for header information)
                JSONObject header = new JSONObject();
                header.put("deviceType","Android"); // Device type
                header.put("deviceVersion","2.0"); // Device OS version
                header.put("language", "es-es");
                jsonObjSend.put("header", header);

                // Output the JSON object we're sending to Logcat:
                Log.i(TAG, jsonObjSend.toString(2));

            } catch (JSONException e) {
                e.printStackTrace();
            }



            try {
                // Send the HttpPostRequest and receive a JSONObject in return
                JSONObject jsonObjRecv = HttpClient.SendHttpPost(URL, jsonObjSend);
                String sessionId = jsonObjRecv.getString("session");

有什么建议吗?

谢谢,

格雷格

2 个答案:

答案 0 :(得分:0)

您的HttpClient.sendHttpPost方法是否返回JSONObject?不确定它是否会自动将HTTP POST中的响应主体解析为JSONObject。如果没有,那么您必须使用JSONTokener或使用像Gson这样的库。

答案 1 :(得分:0)

谷歌的GSON可能是一个更好的选择,你可以直接将实例转换为json字符串,如

User user =new User("tom","12");
Gson gson =new Gson();
json=gson.toJson(user);