在java中解析http响应字节



我正在尝试用java解析byte[],它是HTTP响应的表示。有一个问题,Java有没有简单的http响应解析器?,这正是我的问题,但公认的答案对我没有帮助http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/io/HttpMessageParser.html,我不明白这对我有什么帮助。

我希望这能让你开始

String s = "HTTP/1.1 200 OKrn" +
        "Content-Length: 100rn" +
        "Content-Type: text/plainrn" +
        "Server: some-serverrn" +
        "rn";
SessionInputBufferImpl sessionInputBuffer = new SessionInputBufferImpl(new HttpTransportMetricsImpl(), 2048);
sessionInputBuffer.bind(new ByteArrayInputStream(s.getBytes(Consts.ASCII)));
DefaultHttpResponseParser responseParser = new DefaultHttpResponseParser(sessionInputBuffer);
HttpResponse response = responseParser.parse();
System.out.println(response);

此代码产生以下输出:

HTTP/1.1 200 OK [Content-Length: 100, Content-Type: text/plain, Server: some-server]

看看这个:https://github.com/ipinyol/proxy-base

这是一个简单的高度可配置的http代理。类org.mas.proxybase.ProxyThread的方法readHeader解析给定DataInputStream(按字节读取)的http标头,并返回一个类型为Header的对象,其中包含有关标头的信息。

此外,您可能知道,要么在标头中定义了内容长度,要么在http响应中有必须由块读取的分块数据。同一类的方法readContent和readContentByChunk执行内容的读取。你可以探索你自己的代码并相应地修改。

最新更新