gpt4 book ai didi

java - 缓冲阅读器 HTTP POST

转载 作者:可可西里 更新时间:2023-11-01 16:02:34 26 4
gpt4 key购买 nike

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

最佳答案

我同意 Hans 的观点,您应该使用经过良好测试的标准库来执行此操作。但是,如果您正在编写服务器来了解 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.

现在您可以写下您的回复了。

关于java - 缓冲阅读器 HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com