41

使用 Apache HttpClient 4.1.3 并尝试从以下位置获取状态代码HttpGet

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 等)body或者,如果在 4.1.3 中有另一种方法可以做到这一点,那是什么?

此外,我假设一个完美/良好的 HTTP 响应是一个HttpStatus.SC_ACCEPTED但也希望对此进行确认。提前致谢!

4

3 回答 3

78

编辑:

尝试:

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

这应该可以解决问题!

于 2012-06-06T10:17:25.033 回答
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);
于 2013-02-11T19:33:42.513 回答
4

我这样做:

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

为了通过不使用 responseHandler 将 respose 主体作为 String 获取,我首先将其作为 InputStream 获取:

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

然后将其转换为字符串(如何在此处执行此操作)

于 2012-10-11T10:33:02.783 回答