【发布时间】:2011-02-24 15:32:18
【问题描述】:
有人可以告诉我如何使用 scala 2.8 packrat-parsing 解析 HTTP 协议吗?
我需要将附加的示例 HTTP 响应解析为
- ResponseStatusCode:Int
- 标题:列表[(字符串,字符串)]
- 正文:字符串、数组[字节]、字符缓冲区 或者其他的
非常感谢 Packrat-Parser 的简短示例用法。谢谢!
HTTP/1.1·200·OK(CR)(LF)
Date:·Thu,·27·May·2010·12:18:48·GMT(CR)(LF)
Server:·Apache(CR)(LF)
Vary:·Accept-Encoding,User-Agent(CR)(LF)
Connection:·close(CR)(LF)
Transfer-Encoding:·chunked(CR)(LF)
Content-Type:·text/html;·charset=utf-8(CR)(LF)
(CR)(LF)
... Hello World ..
【问题讨论】:
-
我认为为此使用组合解析器是在使用大锤杀死跳蚤。好吧,也许是一把大锤来杀死一只蟑螂。还要注意,packrat 部分是关于使解析器在回溯时更高效。顺便说一句,我不认为 HTTP 响应的解码需要任何回溯,因此 Packrat 方面没有实际意义。
-
好的,但是什么是解析任意符合标准的 http-responses 的优雅而有效的解决方案?
-
您对编写 HTTP 响应解码器的体验感兴趣吗?或者你只是想消费它们?如果是后者,我只会使用现成的库之一。 Apache HttpComponents (hc.apache.org) 将是显而易见的建议。
-
我需要一个自定义且高效的 HTTP 解析器来处理 CPS 上下文中的 NIO 数据块。我的工作草案位于:github.com/hotzen/Thesis/tree/master/src/dataflow/io/http 很抱歉迟到了评论。感谢有关如何正确设计此类解析器的任何建议。
标签: http parsing scala scala-2.8 parser-combinators