java – 缓冲读取器HTTP POST

寻求一些帮助,我目前编写了一个HTTP服务器.它目前正在处理GET请求.然而,在使用POST时,缓冲的阅读器似乎挂了.当请求停止时,通过缓冲读取器读取其余输入流.我在谷歌上发现了一些东西.我已经尝试将CRLF和协议版本从1.1更改为1.0(浏览器自动发出请求为1.1)任何想法或帮助将不胜感激.谢谢

解决方法:

我同意汉斯的意见,你应该使用一个经过良好测试的标准库来完成这项工作.但是,如果您正在编写服务器以了解HTTP,请参阅以下有关执行您想要执行的操作的信息.

你真的不能使用BufferedReader,因为它缓冲了输入并可能从套接字中读取太多字节.这就是你的代码挂起的原因,BufferedReader试图读取比套接字上可用的更多的字节(因为POST数据没有行结束),并且它正在等待更多的字节(永远不可用) .

简单地解析POST请求的过程是直接使用InputStream

  • For each line in the header
    read a byte at a time until you get a ‘\r’ and then a ‘\n’

  • Look for a line that starts with “Content-Length: “, extract the number at the end of that line.

  • When you get a header line that is empty, you’re done with headers.

  • Now read exactly the # of bytes that came from the Content-Length header.

现在你可以写下你的回复.

上一篇:Python挂在ssh上


下一篇:KMP算法计算next代码理解