Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复此方法以不丢失JSON字符串_Java_Http - Fatal编程技术网

Java 如何修复此方法以不丢失JSON字符串

Java 如何修复此方法以不丢失JSON字符串,java,http,Java,Http,这听起来很奇怪,但是这种方法对于get/most POST请求很有效,但是有时候(通常是最近)StringBuffer不会捕获附加在http请求(JSON)末尾的数据。我哪里做错了 /** * Parses a client request and calls the appropriate handler * @throws Exception */ private void processClientRequest() throws Exception{

这听起来很奇怪,但是这种方法对于get/most POST请求很有效,但是有时候(通常是最近)StringBuffer不会捕获附加在http请求(JSON)末尾的数据。我哪里做错了

/**
     * Parses a client request and calls the appropriate handler
     * @throws Exception
     */
    private void processClientRequest() throws Exception{

        //Get the client request
        BufferedReader clientRequest = new BufferedReader(new InputStreamReader(connectedClient.getInputStream()));

        //Start response object
        DataOutputStream responseToClient = new DataOutputStream(connectedClient.getOutputStream());

        System.out.println(clientRequest);
        String requestString = clientRequest.readLine();

        String header = requestString;

        //Break up request
        StringTokenizer tokenizer = new StringTokenizer(header);

        //Different request parts
        String httpMethod = tokenizer.nextToken();
        String httpQueryString = tokenizer.nextToken();

        //Print client request
        StringBuffer responseBuffer = new StringBuffer();
        while (clientRequest.ready()) {
            responseBuffer.append(requestString + " ");
            System.out.println(requestString);

            requestString = clientRequest.readLine();
        }

        //Process GET request
        if (httpMethod.equals("GET")) {
            processGETRequests(httpQueryString, requestString);


        }else if (httpMethod.equals("POST")) {
            processPOSTRequests(responseBuffer, httpQueryString);
        }
    }

仔细阅读文档以了解更多信息

我认为你的问题是:

while (clientRequest.ready()) {
如果流还没有数据(如果客户端发送的数据慢于服务器处理的数据),则您没有等待客户端发送数据