Разобрать JSON в python-сокете из Android-сокета - PullRequest
0 голосов
/ 04 июня 2019

У меня есть клиент сокета 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...