2012-02-13 53 views
9

是否有任何簡單的http響應解析器實現? 這個想法是將完整的響應作爲一個大字符串放入,並能夠通過接口檢索諸如狀態碼,正文等內容。有什麼簡單的HTTP響應解析器的Java?

請求/響應不是直接通過TCP/IP發送的,所以除了核心rfc 2616解析實現外沒有其他任何需求。

回答

11

如果您使用例如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

恕我直言,OP想要解析他在String中的原始HTTP響應(可能來自某個轉儲)。 – 2012-02-13 13:19:22

+0

Thomasz是對的。我正在處理原始響應......沒有URI並且HttpGet不起作用。 – mibollma 2012-02-13 14:18:34

+0

@mibollma,看到第二個建議使用'HttpMessageParser' – 2012-02-13 14:30:58

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(); 
} 

我推薦在使用前閱讀文檔。