HTTP Web服务器忽略POST请求的最后一行

问题描述

我正试图用Java创建一个简单的Web服务器,以了解HTTP的工作原理。一切正常,除了POST请求的最后一行从未到达服务器这一事实。

那是我的Java客户端线程处理程序:

BufferedReader os = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getoutputStream()));
HTTPRequest http = null;
String v;
while((v = os.readLine()) != null) {
    System.out.println(v);
    if(http == null && !v.isEmpty()) {
        http = new HTTPRequest(v);
    }else if(v == "" || v == null || v.isEmpty()){
        http.setReady();
    }else if(!http.ready()){
        http.addHeaders(v);
    }else {
        http.appendData(v);
    }
    
    if((http.getmethod() != HTTPMethod.POST && http.ready()) 
            || (http.getData() != null && http.hasHeader("Content-Length") 
            && String.valueOf(http.getData().length()) == http.getHeader("Content-Length"))) {
        dispatchHttpRequest(http,socket,bw);
        break;
    }
}

这就是我调用POST请求的方式:

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange",function () {
    if (this.readyState === 4) {
        console.log(this.responseText);
    }
});

xhr.open("POST","http://127.0.0.1:8888/");
xhr.setRequestHeader("content-type","application/javascript");
xhr.setRequestHeader("cache-control","no-cache");

xhr.send(JSON.stringify({error:[],status:200,data:"teste"},null,4));

这就是我在控制台中看到的内容

POST / HTTP/1.1
Host: 127.0.0.1:8888
Connection: keep-alive
Content-Length: 59
cache-control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/86.0.4240.75 Safari/537.36
content-type: application/javascript
Accept: */*                                       
Origin: http://127.0.0.1:8888
sec-fetch-site: same-origin
sec-fetch-mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8888/
Accept-Encoding: gzip,deflate,br
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7

{
    "error": [],"status": 200,"data": "teste"

您可以看到}丢失了,我没有发现任何遇到此问题的人。 :(

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)