如何从RestTemplate读取HTTP状态代码?

Jus*_*ode 0 java spring

我使用RestTemplate调用Rest API.响应没有任何问题.我需要获取HTTP状态代码.

请求还可以 - 200

未经授权 - 400

根据许多帖子,我遇到了吼叫的回答.

RestTemplate template = new RestTemplate();
HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class);

String resultString = response.getBody();
HttpHeaders headers = response.getHeaders();
Run Code Online (Sandbox Code Playgroud)

在这里使用交换方法来获得响应.(template.exchange ....)但我用过

postForObject方法

这是我的代码

public BalanceCheckResponse accountTotal(String counterAlias, String counterAuth, String subscriberType,
        String subscriberValue, String accessMode, String token) {

    BalanceCheckResponse objResponse = new BalanceCheckResponse();

    try {

        BalanceCheckRequest objRequest = new BalanceCheckRequest();
        objRequest.setCounterAlias(counterAlias);
        objRequest.setCounterAuth(counterAuth);
        objRequest.setSubscriberType(subscriberType);
        objRequest.setSubscriberValue(subscriberValue);
        objRequest.setAccessMode(accessMode);

        RestTemplate rstTemp = new RestTemplate();
        final String url = "https://ideabiz.lk/apicall/startpoint/v1/balanceCheck";
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
        MappingJackson2HttpMessageConverter map =new MappingJackson2HttpMessageConverter();
        messageConverters.add(map);
        //messageConverters.add(new StringHttpMessageConverter());
        rstTemp.setMessageConverters(messageConverters);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.add("Authorization", "Bearer "+token);

        HttpEntity<BalanceCheckRequest> entity = new HttpEntity<BalanceCheckRequest>(objRequest,headers);
        objResponse = rstTemp.postForObject(url,entity, BalanceCheckResponse.class  );


    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println(objResponse.getCurrentBalance());
    return objResponse;

}
Run Code Online (Sandbox Code Playgroud)

在我的代码中

objResponse.getHeaders();

显示错误.我能在这做什么 你有什么想法吗?

Mik*_*kis 5

默认情况下,RestTemplate使用a DefaultResponseErrorHandler,如果您没有收到其中一个被视为成功的响应,则会抛出异常.这意味着如果发生错误,您的e.printStackTrace();语句将打印堆栈跟踪.(这很可能不被人注意.)

如果这对你来说不够好,那么有许多方法可以绕过这种行为,其中一种方法就是使用你自己的错误处理程序setErrorHandler( ResponseErrorHandler errorHandler ).