У меня есть клиент сокета Android, который отправляет данные JSON.На сервере у меня есть сервер сокетов Python, который прослушивает.У меня проблемы с анализом данных.Вот что у меня есть:
Клиент Android:
public class SendMessage extends AsyncTask<String, Void, Void> {
private static final String server_ip = "192.168.2.151";
private static final int server_port = 5490;
@Override
protected Void doInBackground(String... params) {
try{
try{
Socket socket = new Socket(server_ip, server_port);
DataOutputStream out = new
DataOutputStream(socket.getOutputStream());
JSONObject obj = new JSONObject();
obj.put("message", "Delivery Request");
out.writeBytes(obj.toString());
out.flush();
out.close();
} catch (IOException e){
e.printStackTrace();
Log.d(TAG, "IOException: " + e.toString());
}
} catch (Exception e){
this.exception = e;
Log.d(TAG, "Exception: " + e.toString());
return null;
}
return null;
}
}
Сервер Python:
class Server():
def __init__(self, host, port):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.conn = self.socket
self._host = host
self._port = port
self.timeout = 2.0
self._bind()
def _bind(self):
self.socket.bind( (self._host, self._port) )
def accept_connection(self):
self.socket.listen(1)
self.conn, addr = self.socket.accept()
self.conn.settimeout(self.timeout)
def read_obj(self):
msg = self.conn.recv(1024)
msg = msg.decode('utf-8')
msg = json.loads(msg)
""" ERROR HERE """
def start(self):
while True:
self.accept_connection()
self.read_obj()
Изначально, когда я делаю msg = self.conn.recv(1024)
, я получаю обратно байты:b'{"message":"Delivery Request"}'
Затем я пытаюсь декодировать его с помощью utf-8: msg = msg.decode('utf-8')
и получаю строку назад: {"message":"Delivery Request"}
Но странная вещь заключается в том, что в кавычках нетЯ print(msg)
в этот момент
Наконец я пытаюсь получить JSON: msg = json.loads(msg)
и получаю эту ошибку: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)