将JSONObject从Android发送到Python
我有一个接受JSONObject的服务器和一个向服务器发送JSONObject的Android应用程序。问题是服务器不喜欢它接收的JSONObject的格式。谁能告诉我我做错了什么 Android客户端:将JSONObject从Android发送到Python,android,python,json,sockets,Android,Python,Json,Sockets,我有一个接受JSONObject的服务器和一个向服务器发送JSONObject的Android应用程序。问题是服务器不喜欢它接收的JSONObject的格式。谁能告诉我我做错了什么 Android客户端: try{ Socket s = new Socket("67.194.98.244",13375); ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream())
try{
Socket s = new Socket("67.194.98.244",13375);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
org.json.JSONObject json = new org.json.JSONObject();
json.put("order", id);
oos.writeObject(json);
oos.flush();
oos.close();
}catch(Exception e){
e.printStackTrace();
}
和python服务器:
class MyTCPServerHandler(SocketServer.BaseRequestHandler):
def handle(self):
try:
data = json.loads(self.request.recv(1024).strip())
# process the data, i.e. print it:
for key, value in data.iteritems():
with print_lock:
print key, value
if key == 'order':
SubmitOrder(value,self)
elif key == 'status':
getStatus(value,self)
else:
with print_lock:
print "no order"
except Exception, e:
print "Exception while receiving message: ", e
以下是Android上的堆栈跟踪:
09-21 21:53:49.804: W/System.err(27827): java.io.StreamCorruptedException
09-21 21:53:49.804: W/System.err(27827): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1528)
09-21 21:53:49.804: W/System.err(27827): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
09-21 21:53:49.804: W/System.err(27827): at com.austinn.hamster.Print.sendCommand(Print.java:173)
09-21 21:53:49.804: W/System.err(27827): at com.austinn.hamster.Print$1$1.run(Print.java:92)
09-21 21:53:52.144: W/System.err(27827): java.io.StreamCorruptedException
09-21 21:53:52.144: W/System.err(27827): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1528)
09-21 21:53:52.154: W/System.err(27827): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
09-21 21:53:52.154: W/System.err(27827): at com.austinn.hamster.Print.sendCommand(Print.java:173)
09-21 21:53:52.154: W/System.err(27827): at com.austinn.hamster.Print$1$1.run(Print.java:92)
“不喜欢”没有帮助。请给出准确的错误消息和回溯(如果有)。“没有JSON对象可以被解码”,如果没有人回答;-),尝试从
json.loads()
调用中拉出recv()
调用,这样您就可以打印接收到的字符串。啊,所以它在Android端正在消亡!很抱歉,我无能为力-但这可能解释了为什么Python方面没有得到任何合理的解析,嗯?