pre*_*per 19 tcp http http-headers
我有一个小程序发送http请求并获得TCP协议的响应.
我的要求格式;
GET / HTTP/1.0
Host: somewebsite.com
{two new line}
Run Code Online (Sandbox Code Playgroud)
我从socket中逐行读取响应(在c#中使用NetworkStream和StreamReader)直到找到content-length头.我存储长度,然后继续阅读,直到找到一个空行.然后创建一个具有长度的缓冲区并接收其余的响应.
但有些响应没有内容长度标题.所以我的方法失败了.如果我不知道我应该收到多少字节,何时应该停止?
请参阅HTTP规范的相关部分.在您的特定情况下,如果服务器没有提供内容长度,那么它必须在完成响应后关闭流.您(作为客户)没有其他可靠的方法可以了解.无论HTTP版本如何.@Julian chunked编码确实是HTTP/1.1中的一个聪明的升级,但它特别适用于流媒体,没有理由为什么"普通"的网络服务器会实现它.这是一个在启动响应之前知道内容长度的服务器.我猜这个OP没有控制服务器,否则他不会反对丢失HTTP头.
但即使你得到内容长度标题,你也不能毫无保留地信任它.服务器实现者也只是易犯错的人.将其作为"最可能"的响应,初始值为可调整大小的缓冲区.你仍然必须准备好处理更少和更多(更糟糕的情况).
| 归档时间: |
|
| 查看次数: |
28848 次 |
| 最近记录: |