这篇文章如果讲解了用C#如何解析http报文,要解析http报文,需要哪些操作呢?下面小编给大家整理相关资料,需要的朋友可以参考下
下面通过一段内容有文字说明有代码分析,并附有展示图供大家学习。
要解析HTTP报文,需要实现以下操作:
读取HTTP报头提供的各种属性
分析属性值,从中获取内容编码和字符集编码
将报头数据和内容进行分离
判断内容是否文本还是二进制,如果是二进制的则不进行处理
如果内容是文本,按报头中提供的内容编码和字符集编码进行解压缩和解码
目前没有找到.Net框架内置的解析方法,理论上HttpClient等类在内部应该已经实现了解析,但不知为何没有公开这些处理方法。(亦或是我没找到)
那么只能自己来解析这些数据了。
我们先来看看这个经过gzip压缩的文本内容的HTTP报文:

这里提供一个老外写的简陋的解析类(已经过修改,原代码中存在一些严重BUG):
- public enum HTTPHeaderField {
- Accept = 0, Accept_Charset = 1,
- Accept_Encoding = 2, Accept_Language = 3,
- Accept_Ranges = 4, Authorization = 5,
- Cache_Control = 6, Connection = 7,
- Cookie = 8, Content_Length = 9,
- Content_Type = 10, Date = 11,
- Expect = 12, From = 13,
- Host = 14, If_Match = 15,
- If_Modified_Since = 16, If_None_Match = 17,
- If_Range = 18, If_Unmodified_Since = 19,
- Max_Forwards = 20, Pragma = 21,
- Proxy_Authorization = 22, Range = 23,
- Referer = 24, TE = 25,
- Upgrade = 26, User_Agent = 27,
- Via = 28, Warn = 29,
- Age = 30, Allow = 31,
- Content_Encoding = 32, Content_Language = 33,
- Content_Location = 34, Content_Disposition = 35,










