Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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 有没有办法防止Apache CloseableHttpClient抛出HttpResponseException?_Java_Apache Httpclient 4.x_Apache Httpcomponents_Web Api Testing - Fatal编程技术网

Java 有没有办法防止Apache CloseableHttpClient抛出HttpResponseException?

Java 有没有办法防止Apache CloseableHttpClient抛出HttpResponseException?,java,apache-httpclient-4.x,apache-httpcomponents,web-api-testing,Java,Apache Httpclient 4.x,Apache Httpcomponents,Web Api Testing,我正在使用ApacheHttpComponents(4.5.11)测试web API 对于否定测试(例如,发送错误的请求),我还想检查响应主体,但CloseableHttpClient使用响应的状态代码抛出HttpResponseException,而不是返回实际响应。 有没有办法防止这种情况发生,或者我应该切换到另一个库(例如重新发行) 我是这样做的: try (CloseableHttpClient httpClient = HttpClients.createDefault();

我正在使用ApacheHttpComponents(4.5.11)测试web API

对于否定测试(例如,发送错误的请求),我还想检查响应主体,但
CloseableHttpClient
使用响应的状态代码抛出
HttpResponseException
,而不是返回实际响应。 有没有办法防止这种情况发生,或者我应该切换到另一个库(例如重新发行)

我是这样做的:

try (CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = httpClient.execute(request)) {
     ResponseHandler<String> handler = new BasicResponseHandler();
     String body = handler.handleResponse(response);
     //Deserialize and perform response assertions..
} catch(HttpResponseException e){
    //Exception is caught here..
}
try(CloseableHttpClient-httpClient=HttpClients.createDefault();
CloseableHttpResponse response=httpClient.execute(请求)){
ResponseHandler=new BasicResponseHandler();
字符串体=handler.handleResponse(响应);
//反序列化并执行响应断言。。
}捕获(HttpResponseException e){
//这里有个例外。。
}
pom.xml依赖项:

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.11</version>
    </dependency>

org.apache.httpcomponents
httpclient
4.5.11

我不太明白这个问题。没有什么可以阻止您直接从响应对象获取状态代码和读取响应内容

try (CloseableHttpClient httpClient = HttpClients.createDefault();
     CloseableHttpResponse response = httpClient.execute(request)) {
    int statusCode = response.getStatusLine().getStatusCode();
    final HttpEntity entity = response.getEntity();
    if (entity != null) {
        try (InputStream inputStream = entity.getContent()) {
            // Do something useful with the response
        }
    }
}
handler.HandlerResponse(响应);此语句是引发异常的语句。我把它取下来,自己处理回复。谢谢你的帮助@ok2c