Я пишу простой HTTP-клиент в .NET для учебных целей. Я использую класс .NET Socket, который в конечном итоге использует Winsock. Я не хочу использовать классы WebRequest, HttpWebRequest или HttpClient, так как они используют WinINet, что я не хочу использовать, поскольку я делаю это для своего собственного понимания того, как работает HTTP.Когда ответ HTTP завершен?
Мне интересно, как определить, когда ответ HTTP завершен. Читая спецификацию HTTP/1.1 (RFC 2616), я думаю, что следующий псевдокод - это способ определения ответа HTTP-ответа.
parse HTTP headers
if parse not successful:
throw error
if HTTP version is 1.1 and Transfer-encoding is chunked:
parse first line of each chunk as an ASCII hexadecimal, the chunk size
if parse not successful:
throw error
read each chunk until chunk size 0
else if Content-Length is specified:
read Content-Length number of bytes
else:
throw error
Это более или менее правильный подход?
возможно дубликат [Конец НТТР Response] (http://stackoverflow.com/questions/17515565/end-of -an-http-response) – CodeCaster
См. RFC 2616 §4.4 (http://tools.ietf.org/html/rfc2616#section-4.4) для рассмотрения большего числа случаев. – cubetwo1729