bri*_*ner 4 .net c# parsing http rfc2616
我正在直接从数据包中解析HTTP数据(无论是TCP重构还是非重构,你都可以认为是这样).
我正在寻找尽可能准确地解析HTTP的最佳方法.
这里的主要问题是HTTP标头.
看一下HTTP/1.1的基本RFC,似乎HTTP头解析会很复杂.RFC描述了标头不同部分的非常复杂的正则表达式.
我应该编写这些正则表达式来解析HTTP头的不同部分吗?
到目前为止我为HTTP标头编写的基本解析是针对通用HTTP标头:
message-header = field-name ":" [ field-value ]
Run Code Online (Sandbox Code Playgroud)
和我已经包含替换内LWS用SP和重复使用相同的报头field-name,如第4.2节描述的逗号分隔值.
但是,以第14.9节为例可以看出,为了解析field-value我的不同部分,我需要一个更复杂的解析方案.
您如何建议我应该处理HTTP解析的复杂部分(特别是field-value),假设我想为解析器用户提供HTTP的全部功能并解析HTTP的每个部分?
对此的设计建议也将不胜感激.
谢谢.
我会遵循单一责任的原则.而不是试图创建一个单一的整体解析器,它可以了解人类已知的每个HTTP头的每个细节,而不是更简单.编写一个简单的可扩展解析器,它本身只负责处理解析字段名称并将该名称与原始值相关联.然后使用可插入的扩展,它只负责解析一种类型的头.当您创建解析器的实例时,请注入一组扩展,并将每个扩展映射到它知道如何解析的一组字段名称.
用这种方法你一石二鸟.您的核心解析器仍然简单且有针对性.您还可以扩展解析器,而不必乱用它的内容,从而产生更强大的代码.
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |