Как исправить ошибку при передаче JSON через Socket с помощью Postman - PullRequest
0 голосов
/ 24 марта 2019

Моя команда пытается создать приложение, которое обнаруживает движение объекта и отправляет эту информацию (JSON) на сервер (серверная часть, использующая java).Я пытался получить данные JSON через сокет, но он показывает такого рода ошибки.Я использую почтальон для отправки JSON для тестирования.Другой вопрос - использовать tomcat для получения и публикации данных из браузера лучше, чем использовать сокет в этом сценарии?

public class ThreadedEchoServer {

    static final int PORT = 5000;

    public static void main(String args[]) {
        ServerSocket serverSocket = null;
        Socket socket = null;

        try {
            serverSocket = new ServerSocket(PORT);
        } catch (IOException e) {
            e.printStackTrace();

        }
        while (true) {
            try {
                socket = serverSocket.accept();
                System.out.println("Client connect...");
            } catch (IOException e) {
                System.out.println("I/O error: " + e);
            }
            // new thread for a client
            new EchoThread(socket).start();
        }
    }
}
public class EchoThread extends Thread {

    protected Socket socket;

    public EchoThread(Socket clientSocket) {
        this.socket = clientSocket;
    }

    public void run() {
        InputStream inp = null;
        BufferedReader brinp = null;
        PrintWriter out = null;
        try {
            inp = socket.getInputStream();
            brinp = new BufferedReader(new InputStreamReader(inp));
//            out = new PrintWriter(socket.getOutputStream(), true);
        } catch (IOException e) {
            return;
        }
        String line;

        while (true) {
            try {
                line = brinp.readLine();
                if ((line == null) || line.equalsIgnoreCase("QUIT")) {
                    socket.close();
                    return;
                } else {
                    JSONObject json = new JSONObject(line);
                    System.out.println("Client: " + json.toString());
                }
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }
        }
    }
}

Вот json, который я использовал Postman для отправки запроса

{
    "id": 963,
    "result": "United States",
    "cook": 30
}

Но я получил эту ошибку

Client connect...
Exception in thread "Thread-0" org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:505)
    at org.json.JSONObject.<init>(JSONObject.java:215)
    at org.json.JSONObject.<init>(JSONObject.java:399)
    at EchoThread.run(EchoThread.java:34)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...