我在检测Socket中HTTP响应的真正结尾时遇到了一些主要问题(我必须按要求使用套接字)。我们正在与发送分块响应的Web服务进行通信。如果返回一个响应,我没有任何问题。但是,当拆分时,所有 hell 都会变得松散:)。
例如:
UserA -> RequestA -> Response[1] -> Processed
UserA -> RequestA -> Response[1] -> Processed
UserB -> RequestB -> a)Response[0,1] -> Processed[a.0]
UserB -> RequestB -> b)Response[0,1] -> Processed[a.1] <- From the previous line. And thus the true response to request B have to be processed again.
处理这种情况的首选方式是什么?顺便说一句,WS还返回Content-Length header 属性,但说实话,我在处理该 header 时会产生头痛。为此,似乎我必须读取ByteArrayOutputStream的 header 字段,并检查它是否包含Content-Length信息。然后检索实际长度,并等待is.available()达到此值。由于可用方法会返回估算值,因此我不信任该估算值。那么正确的方法是什么?
最佳答案
首选方法是使用已经处理过的现有代码:例如HttpURLConnection或Apache HTTP Client。您没有充分的理由重新发明轮子。