Example usage for org.springframework.http.client ClientHttpResponse getStatusText

List of usage examples for org.springframework.http.client ClientHttpResponse getStatusText

Introduction

In this page you can find the example usage for org.springframework.http.client ClientHttpResponse getStatusText.

Prototype

String getStatusText() throws IOException;

Source Link

Document

Return the HTTP status text of the response.

Usage

From source file:nl.gridshore.nosapi.impl.NosApiResponseErrorHandler.java

@Override
public void handleError(ClientHttpResponse response) throws IOException {
    logger.debug("Handle error '{}' received from the NOS server.", response.getStatusCode().name());
    HttpStatus statusCode = response.getStatusCode();
    MediaType contentType = response.getHeaders().getContentType();
    Charset charset = contentType != null ? contentType.getCharSet() : null;
    byte[] body = FileCopyUtils.copyToByteArray(response.getBody());

    switch (statusCode) {
    case BAD_REQUEST:
    case UNAUTHORIZED:
    case FORBIDDEN:
        throwClientException(charset, body);
    default:/* www . j av  a 2s .  com*/
        // do nothing, let the series resolving do it' work
    }

    switch (statusCode.series()) {
    case CLIENT_ERROR:
        throw new HttpClientErrorException(statusCode, response.getStatusText(), body, charset);
    case SERVER_ERROR:
        throw new HttpServerErrorException(statusCode, response.getStatusText(), body, charset);
    default:
        throw new RestClientException("Unknown status code [" + statusCode + "]");
    }
}

From source file:fr.itldev.koya.services.impl.util.AlfrescoRestErrorHandler.java

@Override
public void handleError(ClientHttpResponse clienthttpresponse) throws IOException {

    if (!statusOK.contains(clienthttpresponse.getStatusCode())) {
        AlfrescoServiceException ex;/*from   w  ww .  j a  v a2 s. com*/
        if (clienthttpresponse.getStatusCode().equals(HttpStatus.INTERNAL_SERVER_ERROR)) {
            java.util.Scanner s = new java.util.Scanner(clienthttpresponse.getBody()).useDelimiter("\\A");
            String message = s.hasNext() ? s.next() : "";

            /*
             Try to get any Koya Error code if exists
             */
            Integer koyaErrorCode = null;

            Matcher matcher = ERRORCODEPATTERN.matcher(message);
            if (matcher.find()) {
                koyaErrorCode = Integer.valueOf(matcher.group(1));
            }

            ex = new AlfrescoServiceException(
                    "Erreur " + clienthttpresponse.getStatusCode() + " : " + clienthttpresponse.getStatusText(),
                    koyaErrorCode);
            ex.setHttpErrorCode(clienthttpresponse.getStatusCode().value());
        } else if (clienthttpresponse.getStatusCode().equals(HttpStatus.FORBIDDEN)) {
            ex = new AlfrescoServiceException("Acces Denied");
            ex.setHttpErrorCode(clienthttpresponse.getStatusCode().value());

        } else {
            ex = new AlfrescoServiceException();
            ex.setHttpErrorCode(clienthttpresponse.getStatusCode().value());
            throw ex;
        }
        throw ex;

    }
}

From source file:org.springframework.web.client.RestTemplate.java

private void logResponseStatus(HttpMethod method, URI url, ClientHttpResponse response) {
    if (Log.isLoggable(TAG, Log.DEBUG)) {
        try {/*from   w w w.j a  va  2 s  .  com*/
            Log.d(TAG, method.name() + " request for \"" + url + "\" resulted in " + response.getStatusCode()
                    + " (" + response.getStatusText() + ")");
        } catch (IOException e) {
            // ignore
        }
    }
}

From source file:org.springframework.web.client.RestTemplate.java

private void handleResponseError(HttpMethod method, URI url, ClientHttpResponse response) throws IOException {
    if (Log.isLoggable(TAG, Log.WARN)) {
        try {/*w w w  . j a  v a 2s .c o  m*/
            Log.w(TAG, method.name() + " request for \"" + url + "\" resulted in " + response.getStatusCode()
                    + " (" + response.getStatusText() + "); invoking error handler");
        } catch (IOException e) {
            // ignore
        }
    }
    getErrorHandler().handleError(response);
}

From source file:org.fao.geonet.api.records.formatters.FormatterApi.java

private String getXmlFromUrl(ServiceContext context, String lang, String url, WebRequest request)
        throws IOException, URISyntaxException {
    String adjustedUrl = url;/*  www  . j  a  va 2  s.  c o m*/
    if (!url.startsWith("http")) {
        adjustedUrl = context.getBean(SettingManager.class).getSiteURL(lang) + url;
    } else {
        final URI uri = new URI(url);
        Set allowedRemoteHosts = context.getApplicationContext().getBean("formatterRemoteFormatAllowedHosts",
                Set.class);
        Assert.isTrue(allowedRemoteHosts.contains(uri.getHost()),
                "xml.format is not allowed to make requests to " + uri.getHost());
    }

    HttpUriRequest getXmlRequest = new HttpGet(adjustedUrl);
    final Iterator<String> headerNames = request.getHeaderNames();
    while (headerNames.hasNext()) {
        String headerName = headerNames.next();
        final String[] headers = request.getHeaderValues(headerName);
        for (String header : headers) {
            getXmlRequest.addHeader(headerName, header);
        }
    }

    GeonetHttpRequestFactory requestFactory = context.getBean(GeonetHttpRequestFactory.class);
    final ClientHttpResponse execute = requestFactory.execute(getXmlRequest);
    if (execute.getRawStatusCode() != 200) {
        throw new IllegalArgumentException("Request " + adjustedUrl + " did not succeed.  Response Status: "
                + execute.getStatusCode() + ", status text: " + execute.getStatusText());
    }
    return new String(ByteStreams.toByteArray(execute.getBody()), Constants.CHARSET);
}

From source file:org.springframework.social.twitter.api.impl.TwitterErrorHandler.java

private void handleClientErrors(ClientHttpResponse response) throws IOException {
    HttpStatus statusCode = response.getStatusCode();
    Map<String, Object> errorMap = extractErrorDetailsFromResponse(response);

    String errorText = "";
    if (errorMap.containsKey("error")) {
        errorText = (String) errorMap.get("error");
    } else if (errorMap.containsKey("errors")) {
        Object errors = errorMap.get("errors");
        if (errors instanceof List) {
            @SuppressWarnings("unchecked")
            List<Map<String, String>> errorsList = (List<Map<String, String>>) errors;
            errorText = errorsList.get(0).get("message");
        } else if (errors instanceof String) {
            errorText = (String) errors;
        }/*www  .  ja va  2 s.  co m*/
    }

    if (statusCode == HttpStatus.BAD_REQUEST) {
        if (errorText.contains("Rate limit exceeded.")) {
            throw new RateLimitExceededException("twitter");
        }
    } else if (statusCode == HttpStatus.UNAUTHORIZED) {
        if (errorText == null) {
            throw new NotAuthorizedException("twitter", response.getStatusText());
        } else if (errorText.equals("Could not authenticate you.")) {
            throw new MissingAuthorizationException("twitter");
        } else if (errorText.equals("Could not authenticate with OAuth.")) { // revoked token
            throw new RevokedAuthorizationException("twitter");
        } else if (errorText.equals("Invalid / expired Token")) { // Note that Twitter doesn't actually expire tokens
            throw new InvalidAuthorizationException("twitter", errorText);
        } else {
            throw new NotAuthorizedException("twitter", errorText);
        }
    } else if (statusCode == HttpStatus.FORBIDDEN) {
        if (errorText.equals(DUPLICATE_STATUS_TEXT) || errorText.contains("You already said that")) {
            throw new DuplicateStatusException("twitter", errorText);
        } else if (errorText.equals(STATUS_TOO_LONG_TEXT) || errorText.contains(MESSAGE_TOO_LONG_TEXT)) {
            throw new MessageTooLongException(errorText);
        } else if (errorText.equals(INVALID_MESSAGE_RECIPIENT_TEXT)) {
            throw new InvalidMessageRecipientException(errorText);
        } else if (errorText.equals(DAILY_RATE_LIMIT_TEXT)) {
            throw new RateLimitExceededException("twitter");
        } else {
            throw new OperationNotPermittedException("twitter", errorText);
        }
    } else if (statusCode == HttpStatus.NOT_FOUND) {
        throw new ResourceNotFoundException("twitter", errorText);
    } else if (statusCode == HttpStatus.valueOf(ENHANCE_YOUR_CALM)
            || statusCode == HttpStatus.valueOf(TOO_MANY_REQUESTS)) {
        throw new RateLimitExceededException("twitter");
    }

}

From source file:org.cruk.genologics.api.impl.GenologicsAPIImpl.java

@Override
public void downloadFile(Linkable<GenologicsFile> file, OutputStream resultStream) throws IOException {
    if (file == null) {
        throw new IllegalArgumentException("file cannot be null");
    }/*ww w .  j  a v  a 2 s .co  m*/
    if (resultStream == null) {
        throw new IllegalArgumentException("resultStream cannot be null");
    }

    GenologicsEntity entityAnno = checkEntityAnnotated(GenologicsFile.class);

    GenologicsFile realFile;
    if (file instanceof GenologicsFile) {
        realFile = (GenologicsFile) file;
        if (realFile.getContentLocation() == null) {
            // Don't know where the actual file is, so fetch to get the full info.
            realFile = retrieve(file.getUri(), GenologicsFile.class);
        }
    } else {
        realFile = retrieve(file.getUri(), GenologicsFile.class);
    }

    URI fileURL;
    if (downloadDirectFromHttpStore && HTTP_PROTOCOLS.contains(realFile.getContentLocation().getScheme())) {
        fileURL = realFile.getContentLocation();
    } else {
        try {
            fileURL = new URI(
                    getServerApiAddress() + entityAnno.uriSection() + "/" + realFile.getLimsid() + "/download");
        } catch (URISyntaxException e) {
            throw new IllegalArgumentException(
                    "File LIMS id " + realFile.getLimsid() + " produces an invalid URI for download.", e);
        }
    }

    logger.info("Downloading {}", fileURL);

    ClientHttpRequest request = httpRequestFactory.createRequest(fileURL, HttpMethod.GET);

    ClientHttpResponse response = request.execute();

    switch (response.getStatusCode().series()) {
    case SUCCESSFUL:
        try (InputStream in = response.getBody()) {
            byte[] buffer = new byte[8192];
            IOUtils.copyLarge(in, resultStream, buffer);
        } finally {
            resultStream.flush();
        }
        logger.debug("{} download successful.", fileURL);
        break;

    default:
        logger.debug("{} download failed. HTTP {}", fileURL, response.getStatusCode());
        throw new IOException("Could not download file " + realFile.getLimsid() + " (HTTP "
                + response.getStatusCode() + "): " + response.getStatusText());
    }
}

From source file:org.fao.geonet.doi.client.DoiClient.java

/**
 * This request marks a dataset as 'inactive'.
 * To activate it again, POST new metadata or set the isActive-flag in the user interface.
 *
 * @param doi/* w  w  w.j av a2 s . co  m*/
 * @throws DoiClientException
 */
public void deleteDoiMetadata(String doi) throws DoiClientException {

    ClientHttpResponse httpResponse = null;
    HttpDelete deleteMethod = null;

    try {
        Log.debug(LOGGER_NAME, "   -- URL: " + this.serverUrl + "/metadata");

        deleteMethod = new HttpDelete(createUrl("metadata/" + doi));

        httpResponse = requestFactory.execute(deleteMethod, new UsernamePasswordCredentials(username, password),
                AuthScope.ANY);
        int status = httpResponse.getRawStatusCode();

        Log.debug(LOGGER_NAME, "   -- Request status code: " + status);

        // Ignore NOT FOUND (trying to delete a non existing doi metadata)
        if ((status != HttpStatus.SC_NOT_FOUND) && (status != HttpStatus.SC_OK)) {
            Log.info(LOGGER_NAME, "Delete DOI metadata end -- Error: " + httpResponse.getStatusText());

            throw new DoiClientException(httpResponse.getStatusText());
        } else {
            Log.info(LOGGER_NAME, "DeleteDOI metadata end");
        }

    } catch (Exception ex) {
        Log.error(LOGGER_NAME, "   -- Error (exception): " + ex.getMessage());
        throw new DoiClientException(ex.getMessage());

    } finally {
        if (deleteMethod != null) {
            deleteMethod.releaseConnection();
        }
        // Release the connection.
        IOUtils.closeQuietly(httpResponse);
    }
}