为什么使用RestTemplate时ResponseEntity始终为null?

时间:2019-11-07 19:16:24

标签: spring-boot null resttemplate

我想做一个postForEntity,但结果始终为空。可能是什么原因?

@Override
public ResponseEntity<Void> updateContactProperty(final Long contactId, final String json) throws RestClientException {

    ResponseEntity<Void> crmResponse = null;
    try {
        crmResponse = crmRestTemplate.postForEntity(
                "https://api.hubapi.com/contacts/v1/contact/vid/400000001/profile?hapikey=myApiKey", json, Void.class);
    }  catch (HttpClientErrorException e) {
        e.printStackTrace();
    } catch (HttpStatusCodeException e) {
        e.printStackTrace();
    }catch (RestClientException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } catch (Error r) {
        r.printStackTrace();
    } catch (Throwable t) {
        t.printStackTrace();
    }

    return crmResponse;
}

我尝试了ResponseEntity<Void>ResponseEntity<Object>ResponseEntity<String>

已在RestTemplate中注册的MessageConverters:

  1. ByteArrayHttpMessageConverter
  2. StringHttpMessageConverter
  3. ResourceHttpMessageConverter
  4. SourceHttpMessageConverter
  5. AllEncompassingFormHttpMessageConverter
  6. Jaxb2RootElementHttpMessageConverter
  7. MappingJackson2HttpMessageConverter

没有异常可以捕获...只是进行了呼叫,但是什么也没发生。

1 个答案:

答案 0 :(得分:0)

问题是所请求的API用HttpStatusCodeException和一个空的正文来响应。 HttpStatusCodeException是从RestClientException派生的,因为我首先捕获了RestClientException,所以它已经被消耗了,而且在之后,我没有向我的updateContactProperty(...)方法的调用者填充异常捕获它,以便调用者从不注意到响应(或异常)分别返回。