有没有适用于Java的简单HTTP响应解析器?

11

是否存在简单的HTTP响应解析器实现?

想法是将完整响应作为一个大字符串输入,然后通过接口检索状态码、正文等。

这些请求/响应并非直接通过TCP/IP发送,因此除了核心RFC 2616解析实现外,无需任何其他内容。

2个回答

12
如果您使用例如Apache HttpClient,则会获得一个Java响应对象,您可以使用它来提取标头或消息正文。请考虑以下示例。
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(new HttpGet("http://www.foo.com/"));
Header[] headers = response.getAllHeaders();
InputStream responseBody = response.getEntity().getContent();

如果您只想解析响应,也许HttpMessageParser会很有用:

抽象的消息解析器,旨在从任意数据源构建HTTP消息。


1
在我看来,楼主想要解析他在字符串中拥有的原始HTTP响应(可能是从某个转储中获取的)。 - Tomasz Nurkiewicz
Thomasz是正确的。我正在使用原始响应进行工作...没有URI,HttpGet无法工作。 - mibollma
@mibollma,请看第二个建议,使用HttpMessageParser - Johan Sjöberg
那看起来好多了。非常感谢。 - mibollma

0

我推荐使用基于Apache HTTP API构建的http-request

HttpRequest<String> httpRequest = HttpRequestBuilder.createGet(someUri, String.class)
    .responseDeserializer(ResponseDeserializer.ignorableDeserializer())
    .build();

public void send(){
   ResponseHandler<String> responseHandler = httpRequest.execute();
   String responseBody = responseHandler.get();
   int statusCode = responseHandler.getStatusCode();
}

我强烈建议在使用之前阅读文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接