我想做一个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
- ByteArrayHttpMessageConverter
- StringHttpMessageConverter
- 资源HttpMessageConverter
- SourceHttpMessageConverter
- AllEncompassingFormHttpMessageConverter
- Jaxb2RootElementHttpMessageConverter
- 映射Jackson2HttpMessageConverter
无法捕获任何异常。。。电话刚刚接通,但什么也没发生。
问题是请求的API使用HttpStatusCodeException
和空主体进行响应。HttpStatusCodeException
是从RestClientException
派生而来的,因为我首先捕获了RestClientException
,所以它已经被消耗掉了,而且在捕获它之后,我没有向updateContactProperty(...)
方法的调用方填充异常,所以调用方永远不会注意到返回了响应(或异常(。