JSON io writer在Android上删除了JSONObject

时间:2013-12-11 09:39:19

标签: java android json

我目前正在使用JSON-io库。我创建了一个桌面应用程序,当一个人想要在系统中登录时,用他的用户名和密码发送一个JSONObject。然后,如果允许该人,则服务器发送回响应(也是JSONObject)。直到这里一切正常。 现在我想制作一个Android应用程序。我使用与之前相同的代码进行登录,但应用程序崩溃了。 登录代码是从AsyncTask启动的,我将访问Internet的权限授予Manifest。

我执行了一些测试,并且发生JSONWriter的方法写入“删除”我的JSON,因为在服务器端他收到了这个:{}。我试图在服务器端硬编码JSONObject(服务器的代码工作正常,因为我们可以使用桌面应用程序)但这次android App上的readObject也接收{}。 我们尝试发送jsonObject.toString(),这次它起作用(除了服务器没有配置为处理字符串)。

有谁知道为什么在android上两个方法write和readObject都删除了JSON?

谢谢。

编辑:

这里我写的代码: 在Android应用程序

protected Boolean doInBackground(Void... params) {
        // 3 : create a JSON object and send it to server for verification
        JSONObject loginJS = new JSONObject();

        try {
            loginJS.put("type", Type.LOGIN);   // Type is an enum 
            loginJS.put("username", userName);
            loginJS.put("hash", mPassword);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        User user = new User();

        System.out
                .println("User created and ready to connect to the spu for login");
        user.connexionToSPU(); // This method works
        System.out.println("LoginJS = "+loginJS.toString()); At this point the print of the JSON is fine we have {"type":"Login", ....}
        user.sendToSPU(loginJS); //This is where there's a problem
        // 4 : wait response
        JSONObject loginResponseJS = user.receiveFromSPU(); // And when i hard code the JSON on the server side receiveFromSPU get a empty JSON

方法connexionToSPU:

public void connexionToSPU() {
    jswSPU = null;
    jsrSPU = null;
    Socket socket = null;
    try {
        socket = new Socket(prop.readPropertiesXML("IP_adress_server"),
                Integer.parseInt(prop.readPropertiesXML("port_server")));
    } catch (NumberFormatException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (UnknownHostException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        jswSPU = new JsonWriter(socket.getOutputStream());
        jsrSPU = new JsonReader(new BufferedInputStream(socket.getInputStream()));

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
}

sendToSPU方法

public void sendToSPU(JSONObject json) {

    try {
        jswSPU.write(json);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

ReceiveFromSPU方法

public JSONObject receiveFromSPU() {
    JSONObject json = null;
    try {           
        json = (JSONObject) jsrSPU.readObject();
        System.out.println("JSON FROM THE SERVER : "+json.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return json;
}

希望它足够清楚。 谢谢

0 个答案:

没有答案