2012-06-06 93 views
36

使用Apache的HttpClient 4.1.3並試圖從一個HttpGet的狀態代碼:從bodyHttpClient的獲取狀態碼

HttpClient client = new DefaultHttpClient(); 
HttpGet response = new HttpGet("http://www.example.com"); 
ResponseHandler<String> handler = new BasicResponseHandler(); 
String body = client.execute(response, handler); 

我如何提取狀態代碼(202,404等) ?或者,如果在4.1.3中有另一種方法來做到這一點,它是什麼?

此外,我認爲一個完美的/好的HTTP響應是一個HttpStatus.SC_ACCEPTED,但也想確認。提前致謝!

回答

69

編輯:

嘗試用:

HttpResponse httpResp = client.execute(response); 
int code = httpResp.getStatusLine().getStatusCode(); 

的的HTTPStatus應該是200(HttpStatus.SC_OK


(我讀得太快的問題!)

試穿:

GetMethod getMethod = new GetMethod("http://www.example.com"); 
int res = client.executeMethod(getMethod); 

這應該是訣竅!

+0

Enrichman - 謝謝你,但它看起來不像4.1.3中的GetMethod存在 - 任何想法? – IAmYourFaja

4

我這樣做:

HttpResponse response = client.execute(httppost); 
int status = response.getStatusLine().getStatusCode(); 

通過不使用ResponseHandler所要獲取respose體作爲一個字符串,雖然我得到它第一次爲InputStream的:

InputStream is = response.getEntity().getContent(); 

,然後將其轉換爲字符串(如何做到這一點here

5

這個怎麼樣?

HttpResponse response = client.execute(getRequest); 

// Status Code 
int statusCode = response.getStatusLine().getStatusCode(); 

ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
// Response Body 
String responseBody = responseHandler.handleResponse(response);