List of usage examples for org.springframework.web.client RestTemplate setErrorHandler
public void setErrorHandler(ResponseErrorHandler errorHandler)
From source file:org.spring.data.gemfire.rest.GemFireRestInterfaceTest.java
@SuppressWarnings("deprecation") private RestTemplate setErrorHandler(final RestTemplate restTemplate) { restTemplate.setErrorHandler(new ResponseErrorHandler() { private final Set<HttpStatus> errorStatuses = new HashSet<>(); /* non-static */ { errorStatuses.add(HttpStatus.BAD_REQUEST); errorStatuses.add(HttpStatus.UNAUTHORIZED); errorStatuses.add(HttpStatus.FORBIDDEN); errorStatuses.add(HttpStatus.NOT_FOUND); errorStatuses.add(HttpStatus.METHOD_NOT_ALLOWED); errorStatuses.add(HttpStatus.NOT_ACCEPTABLE); errorStatuses.add(HttpStatus.REQUEST_TIMEOUT); errorStatuses.add(HttpStatus.CONFLICT); errorStatuses.add(HttpStatus.REQUEST_ENTITY_TOO_LARGE); errorStatuses.add(HttpStatus.REQUEST_URI_TOO_LONG); errorStatuses.add(HttpStatus.UNSUPPORTED_MEDIA_TYPE); errorStatuses.add(HttpStatus.TOO_MANY_REQUESTS); errorStatuses.add(HttpStatus.INTERNAL_SERVER_ERROR); errorStatuses.add(HttpStatus.NOT_IMPLEMENTED); errorStatuses.add(HttpStatus.BAD_GATEWAY); errorStatuses.add(HttpStatus.SERVICE_UNAVAILABLE); }/*from w ww . j a v a 2 s .co m*/ @Override public boolean hasError(final ClientHttpResponse response) throws IOException { return errorStatuses.contains(response.getStatusCode()); } @Override public void handleError(final ClientHttpResponse response) throws IOException { System.err.printf("%1$d - %2$s%n", response.getRawStatusCode(), response.getStatusText()); System.err.println(readBody(response)); } private String readBody(final ClientHttpResponse response) throws IOException { BufferedReader responseBodyReader = null; try { responseBodyReader = new BufferedReader(new InputStreamReader(response.getBody())); StringBuilder buffer = new StringBuilder(); String line; while ((line = responseBodyReader.readLine()) != null) { buffer.append(line).append(System.getProperty("line.separator")); } return buffer.toString().trim(); } finally { FileSystemUtils.close(responseBodyReader); } } }); return restTemplate; }
From source file:com.playhaven.android.req.PlayHavenRequest.java
public void send(final Context context) { final StringHttpMessageConverter stringHttpMessageConverter; try {// w w w .j ava 2 s .c o m /** * Charset.availableCharsets() called by StringHttpMessageConverter constructor is not multi-thread safe. * Calling it on the main thread to avoid a possible crash. * More details here: https://code.google.com/p/android/issues/detail?id=42769 */ stringHttpMessageConverter = new StringHttpMessageConverter(Charset.forName(UTF8)); } catch (Exception e) { handleResponse(new PlayHavenException(e.getMessage())); return; } new Thread(new Runnable() { @Override public void run() { try { /** * First, check if we are mocking the URL */ String mockJsonResponse = getMockJsonResponse(); if (mockJsonResponse != null) { /** * Mock the response */ PlayHaven.v("Mock Response: %s", mockJsonResponse); handleResponse(mockJsonResponse); return; } /** * Not mocking the response. Do an actual server call. */ String url = getUrl(context); PlayHaven.v("Request(%s) %s: %s", PlayHavenRequest.this.getClass().getSimpleName(), restMethod, url); // Add the gzip Accept-Encoding header HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setAcceptEncoding(ContentCodingType.GZIP); requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json"))); // Create our REST handler RestTemplate rest = new RestTemplate(); rest.setErrorHandler(new ServerErrorHandler()); // Capture the JSON for signature verification rest.getMessageConverters().add(stringHttpMessageConverter); ResponseEntity<String> entity = null; switch (restMethod) { case POST: SharedPreferences pref = PlayHaven.getPreferences(context); String apiServer = getString(pref, APIServer) + context.getResources().getString(getApiPath(context)); url = url.replace(apiServer, ""); if (url.startsWith("?") && url.length() > 1) url = url.substring(1); requestHeaders.setContentType(new MediaType("application", "x-www-form-urlencoded")); entity = rest.exchange(apiServer, restMethod, new HttpEntity<>(url, requestHeaders), String.class); break; default: entity = rest.exchange(url, restMethod, new HttpEntity<>(requestHeaders), String.class); break; } String json = entity.getBody(); List<String> digests = entity.getHeaders().get("X-PH-DIGEST"); String digest = (digests == null || digests.size() == 0) ? null : digests.get(0); validateSignatures(context, digest, json); HttpStatus statusCode = entity.getStatusCode(); PlayHaven.v("Response (%s): %s", statusCode, json); serverSuccess(context); handleResponse(json); } catch (PlayHavenException e) { handleResponse(e); } catch (IOException e2) { handleResponse(new PlayHavenException(e2)); } catch (Exception e3) { handleResponse(new PlayHavenException(e3.getMessage())); } } }).start(); }
From source file:org.cloudfoundry.client.lib.rest.CloudControllerClientV1.java
/** * Upload an app using the legacy API used for older vcap versions like Micro Cloud Foundry 1.1 and older * As of Micro Cloud Foundry 1.2 and for any recent CloudFoundry.com deployment the current method of setting * the content type as JSON works fine./* w w w. j ava 2s .c om*/ * * @param path app path * @param entity HttpEntity for the payload * @param appName name of app * @throws HttpServerErrorException */ private void uploadAppUsingLegacyApi(String path, HttpEntity<?> entity, String appName) throws HttpServerErrorException { RestTemplate legacyRestTemplate = new RestTemplate(); legacyRestTemplate.setRequestFactory(this.getRestTemplate().getRequestFactory()); legacyRestTemplate.setErrorHandler(new ErrorHandler()); legacyRestTemplate.setMessageConverters(getLegacyMessageConverters()); legacyRestTemplate.put(path, entity, appName); }
From source file:org.cloudfoundry.identity.batch.integration.ServerRunning.java
public RestTemplate createRestTemplate() { RestTemplate client = new RestTemplate(); client.setRequestFactory(new HttpComponentsClientHttpRequestFactory() { @Override//from ww w. j ava 2s . com public HttpClient getHttpClient() { HttpClient client = super.getHttpClient(); client.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false); client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES); return client; } }); client.setErrorHandler(new ResponseErrorHandler() { // Pass errors through in response entity for status code analysis public boolean hasError(ClientHttpResponse response) throws IOException { return false; } public void handleError(ClientHttpResponse response) throws IOException { } }); return client; }
From source file:com.netflix.genie.security.oauth2.pingfederate.PingFederateRemoteTokenServices.java
/** * Constructor./* w w w. j a v a 2s . c o m*/ * * @param serverProperties The properties of the resource server (Genie) * @param converter The access token converter to use * @param registry The metrics registry to use */ public PingFederateRemoteTokenServices(@NotNull final ResourceServerProperties serverProperties, @NotNull final AccessTokenConverter converter, @NotNull final MeterRegistry registry) { super(); this.authenticationTimer = registry.timer(AUTHENTICATION_TIMER_NAME); this.pingFederateAPITimer = registry.timer(API_TIMER_NAME); final HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setConnectTimeout(2000); factory.setReadTimeout(10000); final RestTemplate restTemplate = new RestTemplate(factory); final List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(); interceptors .add((final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) -> { final long start = System.nanoTime(); try { return execution.execute(request, body); } finally { pingFederateAPITimer.record(System.nanoTime() - start, TimeUnit.NANOSECONDS); } }); restTemplate.setInterceptors(interceptors); restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { // Ignore 400 @Override public void handleError(final ClientHttpResponse response) throws IOException { final int errorCode = response.getRawStatusCode(); registry.counter(TOKEN_VALIDATION_ERROR_COUNTER_NAME, Sets.newHashSet(Tag.of(MetricsConstants.TagKeys.STATUS, Integer.toString(errorCode)))) .increment(); if (response.getRawStatusCode() != HttpStatus.BAD_REQUEST.value()) { super.handleError(response); } } }); this.setRestTemplate(restTemplate); this.checkTokenEndpointUrl = serverProperties.getTokenInfoUri(); this.clientId = serverProperties.getClientId(); this.clientSecret = serverProperties.getClientSecret(); Assert.state(StringUtils.isNotBlank(this.checkTokenEndpointUrl), "Check Endpoint URL is required"); Assert.state(StringUtils.isNotBlank(this.clientId), "Client ID is required"); Assert.state(StringUtils.isNotBlank(this.clientSecret), "Client secret is required"); log.debug("checkTokenEndpointUrl = {}", this.checkTokenEndpointUrl); log.debug("clientId = {}", this.clientId); log.debug("clientSecret = {}", this.clientSecret); this.converter = converter; }
From source file:com.netflix.genie.web.security.oauth2.pingfederate.PingFederateRemoteTokenServices.java
/** * Constructor.//from w ww . j a va 2 s .c o m * * @param serverProperties The properties of the resource server (Genie) * @param converter The access token converter to use * @param registry The metrics registry to use */ public PingFederateRemoteTokenServices(@NotNull final ResourceServerProperties serverProperties, @NotNull final AccessTokenConverter converter, @NotNull final Registry registry) { super(); this.tokenValidationError = registry .createId("genie.security.oauth2.pingFederate.tokenValidation.error.rate"); this.authenticationTimer = registry.timer(AUTHENTICATION_TIMER_NAME); this.pingFederateAPITimer = registry.timer(API_TIMER_NAME); final HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setConnectTimeout(2000); factory.setReadTimeout(10000); final RestTemplate restTemplate = new RestTemplate(factory); final List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(); interceptors .add((final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) -> { final long start = System.nanoTime(); try { return execution.execute(request, body); } finally { pingFederateAPITimer.record(System.nanoTime() - start, TimeUnit.NANOSECONDS); } }); restTemplate.setInterceptors(interceptors); restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { // Ignore 400 @Override public void handleError(final ClientHttpResponse response) throws IOException { final int errorCode = response.getRawStatusCode(); registry.counter(tokenValidationError.withTag("status", Integer.toString(errorCode))).increment(); if (response.getRawStatusCode() != HttpStatus.BAD_REQUEST.value()) { super.handleError(response); } } }); this.setRestTemplate(restTemplate); this.checkTokenEndpointUrl = serverProperties.getTokenInfoUri(); this.clientId = serverProperties.getClientId(); this.clientSecret = serverProperties.getClientSecret(); Assert.state(StringUtils.isNotBlank(this.checkTokenEndpointUrl), "Check Endpoint URL is required"); Assert.state(StringUtils.isNotBlank(this.clientId), "Client ID is required"); Assert.state(StringUtils.isNotBlank(this.clientSecret), "Client secret is required"); log.debug("checkTokenEndpointUrl = {}", this.checkTokenEndpointUrl); log.debug("clientId = {}", this.clientId); log.debug("clientSecret = {}", this.clientSecret); this.converter = converter; }
From source file:org.apigw.authserver.ServerRunning.java
public RestTemplate getRestTemplate() { RestTemplate client = new RestTemplate(); client.setRequestFactory(new HttpComponentsClientHttpRequestFactory() { @Override// w ww . j a va 2s . c o m public HttpClient getHttpClient() { HttpClient client = super.getHttpClient(); client.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false); client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES); return client; } }); client.setErrorHandler(new ResponseErrorHandler() { // Pass errors through in response entity for status code analysis public boolean hasError(ClientHttpResponse response) throws IOException { return false; } public void handleError(ClientHttpResponse response) throws IOException { } }); return client; }
From source file:org.cloudfoundry.identity.uaa.login.RemoteUaaController.java
public RemoteUaaController(Environment environment, RestTemplate restTemplate) { // The default java.net client doesn't allow you to handle 4xx responses restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory() { @Override/* w w w.ja va 2 s . c o m*/ public HttpClient getHttpClient() { return HttpClientBuilder.create().useSystemProperties().disableCookieManagement().build(); } }); restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { @Override public boolean hasError(ClientHttpResponse response) throws IOException { HttpStatus statusCode = response.getStatusCode(); return statusCode.series() == HttpStatus.Series.SERVER_ERROR; } }); this.environment = environment; defaultTemplate = restTemplate; initProperties(); }