Java 使用';获取Http响应状态;httpClient(postRequest、Handler)和#x27;方法
环顾四周,我发现了这种方法:Java 使用';获取Http响应状态;httpClient(postRequest、Handler)和#x27;方法,java,httpresponse,Java,Httpresponse,环顾四周,我发现了这种方法: String JSONResult = httpclient.execute(request,handler); //Request is an HttpPost object, handler is a ResponseHandler<String> 是否有任何方法可以使用第一种方法,并且仍然能够获得响应状态?是否有任何方法可以使用第一种方法,并且仍然能够获得响应状态 没有 这就是你要做的 HttpResponse response = httpc
String JSONResult = httpclient.execute(request,handler);
//Request is an HttpPost object, handler is a ResponseHandler<String>
是否有任何方法可以使用第一种方法,并且仍然能够获得响应状态
?是否有任何方法可以使用第一种方法,并且仍然能够获得响应状态
没有
这就是你要做的
HttpResponse response = httpclient.execute(request);
ResponseHandler handler = ...;
String JSONResult = handler.handleResponse(response);
StatusLine status = response.getStatusLine();
现在,您可以从
HttpResponse
对象访问状态,并且可以使用ResponseHandler
处理响应以获得json结果。不同方法的要点在于,您并不真正关心状态,只关心已处理的响应。您可以获取状态并使用EntityUtils
避免与输入流和缓冲读取器混淆
HttpResponse response = httpclient.execute(request);
String json = EntityUtils.toString(response.getEntity());
int status = response.getStatusLine().getStatusCode()
你不可能既有蛋糕又吃。很好,它工作得很好,在接受你的答案之前,最后一件事是,为什么人们用输入流缓冲读取器这样做,但不是这样吗?@HossamOukli要么他们不知道
ResponseHandler
,要么他们正在实现一个不同的接口,该接口需要输入流
。例如,您可以使用Jackson的ObjectMapper
获取JSON。在调试过程中,我不确定为什么使用BasichtpEntity.class
HttpResponse response = httpclient.execute(request);
String json = EntityUtils.toString(response.getEntity());
int status = response.getStatusLine().getStatusCode()