【发布时间】:2010-05-02 01:16:59
【问题描述】:
初步:我正在用 Java 编写自己的 httpclient。我正在尝试解析分块编码的内容。
这是我的困境:因为我试图用 gzip 有效负载解析出分块的 http 传输编码,所以混合了 ascii 和二进制。我不能只获取 http resp 内容并将其转换为字符串并使用 StringUtils,因为二进制数据很容易包含 nil 字符。所以我需要做的是解析每个块及其块长度的一些基本操作(根据块传输/HTTP/1.1 规范)。
是否有任何有用的方法可以在二进制/部分 ascii 数据的字节数组中搜索某些模式(例如 CR LF)(而不仅仅是单个字节)?还是我必须为此编写 for 循环?
【问题讨论】:
-
注意仅仅因为有一个CR LF 并不意味着它一定是文本。二进制数据也可以有这些字节序列。这些块编码的文件中有什么?这可能会帮助您解决问题。
-
Java 字符串可以包含 nil 字符。
"\0x".endsWith("x")是true。 -
顺便说一句,您应该永远不要仅仅因为您想解析它们而将二进制流转换为字符流。 CRLF 只有 2 个 ASCII 字节。只需检查一个 13 和一个 10 是否彼此落后。
标签: java http parsing bytearray