Почему ResponseEntity всегда имеет значение null при использовании RestTemplate? - PullRequest
2 голосов
/ 07 ноября 2019

Я хочу сделать 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:

  1. ByteArrayHttpMessageConverter
  2. StringHttpMessageConverter
  3. ResourceHttpMessageConverter
  4. SourceConververHessterPhttp:
  5. Jaxb2RootElementHttpMessageConverter
  6. MappingJackson2HttpMessageConverter

Никаких исключений не может быть поймано ... вызов только что выполнен, но ничего не происходит.

1 Ответ

0 голосов
/ 08 ноября 2019

Проблема заключалась в том, что запрошенный API отвечает HttpStatusCodeException и пустым телом. HttpStatusCodeException является производным от RestClientException, и поскольку я сначала перехватил RestClientException, он уже был использован, и, кроме того, я не заполнил исключение для вызывающей стороны моего метода updateContactProperty(...) после его перехвата, так что вызывающая сторона никогда не заметилачто ответ (или исключение соответственно) вернулся.

...