} else {
logger.debug("GET request to {} for {}", url, responseType.getType().getTypeName());
}
+
SimpleClientHttpRequestFactory rf = (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory();
+ ResponseEntity<T> re;
+
if (rf != null) {
rf.setReadTimeout(10000);
rf.setConnectTimeout(10000);
}
- ResponseEntity<T> re;
+
try {
if (request != null) {
re = restTemplate.exchange(url, HttpMethod.POST, request, responseType);
}
} catch (HttpStatusCodeException ex) {
// make my own exception out of this.
+ HttpHeaders httpHeaders = ex.getResponseHeaders();
logger.warn("Unexpected HTTP Status from endpoint {}", ex.getRawStatusCode());
- if ((ex.getResponseHeaders().getContentType() != null) && (
- (ex.getResponseHeaders().getContentType().isCompatibleWith(MediaType.APPLICATION_JSON))
- || (ex.getResponseHeaders().getContentType()
- .isCompatibleWith(MediaType.parseMediaType("application/problem+json"))))) {
- String s = ex.getResponseBodyAsString();
- logger.warn("endpoint body content is {}", s);
- try {
- JsonObject o = new GsonBuilder().create().fromJson(s, JsonObject.class);
- throw buildTestingException(ex.getRawStatusCode(), o);
- } catch (JsonParseException e) {
- logger.warn("unexpected JSON response", e);
- throw new ExternalTestingException(ENDPOINT_ERROR_CODE, ex.getStatusCode().value(),
- ex.getResponseBodyAsString(), ex);
- }
- } else {
+
+ if (httpHeaders == null) {
+ throw new ExternalTestingException(ENDPOINT_ERROR_CODE, 500, "Failed to get HTTP Response Headers", ex);
+ }
+
+ MediaType responseHeadersContentType = httpHeaders.getContentType();
+
+ if (responseHeadersContentType == null || (!responseHeadersContentType.isCompatibleWith(MediaType.APPLICATION_JSON)
+ && !responseHeadersContentType.isCompatibleWith(MediaType.parseMediaType("application/problem+json")))) {
+ throw new ExternalTestingException(ENDPOINT_ERROR_CODE, ex.getStatusCode().value(), ex.getResponseBodyAsString(), ex);
+ }
+
+ String s = ex.getResponseBodyAsString();
+ logger.warn("endpoint body content is {}", s);
+
+ try {
+ JsonObject o = new GsonBuilder().create().fromJson(s, JsonObject.class);
+ throw buildTestingException(ex.getRawStatusCode(), o);
+ } catch (JsonParseException e) {
+ logger.warn("unexpected JSON response", e);
throw new ExternalTestingException(ENDPOINT_ERROR_CODE, ex.getStatusCode().value(),
ex.getResponseBodyAsString(), ex);
}
} catch (Exception ex) {
throw new ExternalTestingException(ENDPOINT_ERROR_CODE, 500, "Generic Exception " + ex.getMessage(), ex);
}
+
if (re != null) {
logger.debug("http status of {} from external testing entity {}", re.getStatusCodeValue(), url);
return re.getBody();