我正在尝试在java中创建一个http服务器。
以下是我的代码片段。
ServerSocket s = new ServerSocket(80);
while(true){
Socket client = s.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream()));
String input = in.readLine(), ff;
System.out.println(input);
while((ff = in.readLine()) != null){
System.out.println(ff);
}
System.out.println("asd");
in.close();
client.close();
}
Asd从未打印过。当我尝试在本地主机上执行POST时,它会向我发送所有标头,但不会发送任何内容数据。它等在那里什么都不做。
我正在使用Jquery
做一个帖子$.post("http://127.0.0.1/",
{
name: "Donald Duck",
city: "Duckburg"
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
这是在屏幕上打印的内容:
POST / HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
Content-Length: 5
Accept: */*
Origin: http://www.w3schools.com
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/47.0.2526.73 Chrome/47.0.2526.73 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
那就是它,在此之后什么都没有。它在这一点上无限期地等待。
答案 0 :(得分:0)
我的猜测 将是您的实际内容/有效负载未被BufferedReader#readLine()中所述的预期行分隔符终止。
这会阻止您的in.readLine()
调用。
我会尝试使用read()
方法,看看是否有帮助。如在
while((value = in.read()) != -1) {
char c = (char)value;
System.out.println(c);
}
编辑:事实上,您的问题很可能会重复此问题:Buffered Reader HTTP POST