Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用';获取Http响应状态;httpClient(postRequest、Handler)和#x27;方法_Java_Httpresponse - Fatal编程技术网

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