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

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

Introduction

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

Prototype

HttpHeaders getHeaders();

Source Link

Document

Return the headers of this message.

Usage

From source file:org.fao.geonet.util.XslUtil.java

/**
 * Returns the HTTP code  or error message if error occurs during URL connection.
 *
 * @param url       The URL to ckeck./*from www. j a  va 2  s . c  o m*/
 * @param tryNumber the number of remaining tries.
 */
public static String getUrlStatus(String url, int tryNumber) {
    if (tryNumber < 1) {
        // protect against redirect loops
        return "ERR_TOO_MANY_REDIRECTS";
    }
    HttpHead head = new HttpHead(url);
    GeonetHttpRequestFactory requestFactory = ApplicationContextHolder.get()
            .getBean(GeonetHttpRequestFactory.class);
    ClientHttpResponse response = null;
    try {
        response = requestFactory.execute(head, new Function<HttpClientBuilder, Void>() {
            @Nullable
            @Override
            public Void apply(@Nullable HttpClientBuilder originalConfig) {
                RequestConfig.Builder config = RequestConfig.custom().setConnectTimeout(1000)
                        .setConnectionRequestTimeout(3000).setSocketTimeout(5000);
                RequestConfig requestConfig = config.build();
                originalConfig.setDefaultRequestConfig(requestConfig);

                return null;
            }
        });
        //response = requestFactory.execute(head);
        if (response.getRawStatusCode() == HttpStatus.SC_BAD_REQUEST
                || response.getRawStatusCode() == HttpStatus.SC_METHOD_NOT_ALLOWED
                || response.getRawStatusCode() == HttpStatus.SC_INTERNAL_SERVER_ERROR) {
            // the website doesn't support HEAD requests. Need to do a GET...
            response.close();
            HttpGet get = new HttpGet(url);
            response = requestFactory.execute(get);
        }

        if (response.getStatusCode().is3xxRedirection() && response.getHeaders().containsKey("Location")) {
            // follow the redirects
            return getUrlStatus(response.getHeaders().getFirst("Location"), tryNumber - 1);
        }

        return String.valueOf(response.getRawStatusCode());
    } catch (IOException e) {
        Log.error(Geonet.GEONETWORK, "IOException validating  " + url + " URL. " + e.getMessage(), e);
        return e.getMessage();
    } finally {
        if (response != null) {
            response.close();
        }
    }
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void serverHeaderIsDisabledByDefault() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    this.webServer = factory.getWebServer(exampleServletRegistration());
    this.webServer.start();
    ClientHttpResponse response = getClientResponse(getLocalUrl("/hello"));
    assertThat(response.getHeaders().getFirst("server")).isNull();
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void customServerHeader() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    factory.setServerHeader("MyServer");
    this.webServer = factory.getWebServer(exampleServletRegistration());
    this.webServer.start();
    ClientHttpResponse response = getClientResponse(getLocalUrl("/hello"));
    assertThat(response.getHeaders().getFirst("server")).isEqualTo("MyServer");
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void mimeType() throws Exception {
    FileCopyUtils.copy("test", new FileWriter(this.temporaryFolder.newFile("test.xxcss")));
    AbstractServletWebServerFactory factory = getFactory();
    factory.setDocumentRoot(this.temporaryFolder.getRoot());
    MimeMappings mimeMappings = new MimeMappings();
    mimeMappings.add("xxcss", "text/css");
    factory.setMimeMappings(mimeMappings);
    this.webServer = factory.getWebServer();
    this.webServer.start();
    ClientHttpResponse response = getClientResponse(getLocalUrl("/test.xxcss"));
    assertThat(response.getHeaders().getContentType().toString()).isEqualTo("text/css");
    response.close();// www.j av  a2s. c  o  m
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void serverHeaderIsDisabledByDefaultWhenUsingSsl() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    factory.setSsl(getSsl(null, "password", "src/test/resources/test.jks"));
    this.webServer = factory
            .getWebServer(new ServletRegistrationBean<>(new ExampleServlet(true, false), "/hello"));
    this.webServer.start();
    SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
            new SSLContextBuilder().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build());
    HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
    ClientHttpResponse response = getClientResponse(getLocalUrl("https", "/hello"), HttpMethod.GET,
            new HttpComponentsClientHttpRequestFactory(httpClient));
    assertThat(response.getHeaders().get("Server")).isNullOrEmpty();
}

From source file:org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests.java

@Test
public void serverHeaderCanBeCustomizedWhenUsingSsl() throws Exception {
    AbstractServletWebServerFactory factory = getFactory();
    factory.setServerHeader("MyServer");
    factory.setSsl(getSsl(null, "password", "src/test/resources/test.jks"));
    this.webServer = factory
            .getWebServer(new ServletRegistrationBean<>(new ExampleServlet(true, false), "/hello"));
    this.webServer.start();
    SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
            new SSLContextBuilder().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build());
    HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
    ClientHttpResponse response = getClientResponse(getLocalUrl("https", "/hello"), HttpMethod.GET,
            new HttpComponentsClientHttpRequestFactory(httpClient));
    assertThat(response.getHeaders().get("Server")).containsExactly("MyServer");
}

From source file:io.github.microcks.util.test.HttpTestRunner.java

@Override
public List<TestReturn> runTest(Service service, Operation operation, TestResult testResult,
        List<Request> requests, String endpointUrl, HttpMethod method) throws URISyntaxException, IOException {
    if (log.isDebugEnabled()) {
        log.debug("Launching test run on " + endpointUrl + " for " + requests.size() + " request(s)");
    }/*from w  w w. j a v  a2  s .  c o m*/

    // Initialize result container.
    List<TestReturn> result = new ArrayList<TestReturn>();

    for (Request request : requests) {
        // Reset status code, message and request each time.
        int code = TestReturn.SUCCESS_CODE;
        String message = null;
        String customizedEndpointUrl = endpointUrl;
        if (service.getType().equals(ServiceType.REST)) {
            String operationName = operation.getName();
            // Name may start with verb, remove it if present.
            if (operationName.indexOf(' ') > 0 && operationName.indexOf(' ') < operationName.length()) {
                operationName = operationName.split(" ")[1];
            }

            customizedEndpointUrl += URIBuilder.buildURIFromPattern(operationName,
                    request.getQueryParameters());
            log.debug("Using customized endpoint url: " + customizedEndpointUrl);
        }
        ClientHttpRequest httpRequest = clientHttpRequestFactory.createRequest(new URI(customizedEndpointUrl),
                method);

        // Set headers to request if any.
        Set<Header> headers = request.getHeaders();
        if (headers != null && headers.size() > 0) {
            for (Header header : headers) {
                httpRequest.getHeaders().add(header.getName(), buildValue(header.getValues()));
            }
        }
        // If there's input content, add it to request.
        if (request.getContent() != null) {
            httpRequest.getBody().write(request.getContent().getBytes());
        }

        // Actually execute request.
        long startTime = System.currentTimeMillis();
        ClientHttpResponse httpResponse = null;
        try {
            httpResponse = httpRequest.execute();
        } catch (IOException ioe) {
            log.error("IOException while executing request " + request.getName() + " on " + endpointUrl, ioe);
            code = TestReturn.FAILURE_CODE;
            message = ioe.getMessage();
        }
        long duration = System.currentTimeMillis() - startTime;

        // Extract and store response body so that stream may not be consumed more than o1 time ;-)
        String responseContent = null;
        if (httpResponse != null) {
            StringWriter writer = new StringWriter();
            IOUtils.copy(httpResponse.getBody(), writer);
            responseContent = writer.toString();
        }

        // If still in success, check if http code is out of correct ranges (20x and 30x).
        if (code == TestReturn.SUCCESS_CODE) {
            code = extractTestReturnCode(service, operation, request, httpResponse, responseContent);
            message = extractTestReturnMessage(service, operation, request, httpResponse);
        }

        // Create a Response object for returning.
        Response response = new Response();
        if (httpResponse != null) {
            response.setContent(responseContent);
            response.setStatus(String.valueOf(httpResponse.getRawStatusCode()));
            response.setMediaType(httpResponse.getHeaders().getContentType().toString());
            headers = buildHeaders(httpResponse);
            if (headers != null) {
                response.setHeaders(headers);
            }
        }

        result.add(new TestReturn(code, duration, message, request, response));
    }
    return result;
}

From source file:com.pepaproch.gtswsdl.LoginRequestInterceptor.java

private ClientHttpResponse logResponse(ClientHttpResponse response) throws IOException {

    ClientHttpResponse result = new ClientHttpResponse() {

        InputStream in;//from   ww w  .  j  av  a  2 s .  c  o m
        InputStream oldIn = response.getBody();
        String jsonResponse;

        @Override
        public HttpStatus getStatusCode() throws IOException {
            return response.getStatusCode();
        }

        @Override
        public int getRawStatusCode() throws IOException {
            return response.getRawStatusCode();
        }

        @Override
        public String getStatusText() throws IOException {
            return response.getStatusText();
        }

        @Override
        public void close() {
            try {
                Logger.getLogger(LoginRequestInterceptor.class).log(Level.DEBUG, jsonResponse);
                in.close();
                oldIn.close();
            } catch (IOException ex) {
                java.util.logging.Logger.getLogger(LoginRequestInterceptor.class.getName())
                        .log(java.util.logging.Level.SEVERE, null, ex);
            }
        }

        @Override
        public InputStream getBody() throws IOException {
            if (in == null) {
                try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                    byte[] readBuffer = new byte[4 * 1024];
                    int lenght;
                    while ((lenght = oldIn.read(readBuffer)) != -1) {
                        baos.write(readBuffer, 0, lenght);
                    }
                    baos.flush();
                    jsonResponse = baos.toString();
                    in = new ByteArrayInputStream(baos.toByteArray());
                }

            }
            return in;
        }

        @Override
        public HttpHeaders getHeaders() {
            return response.getHeaders();
        }
    };

    return result;
}

From source file:io.github.microcks.util.openapi.OpenAPITestRunner.java

@Override
protected int extractTestReturnCode(Service service, Operation operation, Request request,
        ClientHttpResponse httpResponse, String responseContent) {
    int code = TestReturn.SUCCESS_CODE;

    int responseCode = 0;
    try {//from w  w  w . j  a va  2s.co m
        responseCode = httpResponse.getRawStatusCode();
    } catch (IOException ioe) {
        log.debug("IOException while getting raw status code in response", ioe);
        return TestReturn.FAILURE_CODE;
    }

    // If required, compare response code to expected one.
    if (validateResponseCode) {
        Response expectedResponse = responseRepository.findOne(request.getResponseId());
        if (String.valueOf(responseCode).equals(expectedResponse.getStatus())) {
            log.debug("Response HttpStatus does not match expected one, returning failure");
            return TestReturn.FAILURE_CODE;
        }
    }

    // Retrieve the resource corresponding to OpenAPI specification if any.
    Resource openapiSpecResource = null;
    List<Resource> resources = resourceRepository.findByServiceId(service.getId());
    for (Resource resource : resources) {
        if (ResourceType.OPEN_API_SPEC.equals(resource.getType())) {
            openapiSpecResource = resource;
            break;
        }
    }
    if (openapiSpecResource == null) {
        log.debug("Do not found any OpenAPI specification resource for service {0}, so failing validating",
                service.getId());
        return TestReturn.FAILURE_CODE;
    }

    JsonNode openapiSpec = null;
    try {
        openapiSpec = OpenAPISchemaValidator.getJsonNodeForSchema(openapiSpecResource.getContent());
    } catch (IOException ioe) {
        log.debug("OpenAPI specification cannot be transformed into valid JsonNode schema, so failing");
        return TestReturn.FAILURE_CODE;
    }

    // Extract JsonNode corresponding to response.
    String verb = operation.getName().split(" ")[0].toLowerCase();
    String path = operation.getName().split(" ")[1].trim();
    MediaType mediaType = httpResponse.getHeaders().getContentType();
    log.debug("Response media-type is {}", mediaType.toString());

    String pointer = "/paths/" + path.replace("/", "~1") + "/" + verb + "/responses/" + responseCode
            + "/content/" + mediaType.toString().replace("/", "~1");
    JsonNode responseNode = openapiSpec.at(pointer);
    log.debug("responseNode: " + responseNode);

    // Is there a specified responseNode for this type ??
    if (responseNode != null && !responseNode.isMissingNode()) {
        // Get body content as a string.
        JsonNode contentNode = null;
        try {
            contentNode = OpenAPISchemaValidator.getJsonNode(responseContent);
        } catch (IOException ioe) {
            log.debug("Response body cannot be accessed or transformed as Json, returning failure");
            return TestReturn.FAILURE_CODE;
        }

        // Build a schema object with responseNode schema as root and by importing
        // all the common parts that may be referenced by references.
        JsonNode schemaNode = responseNode.path("schema").deepCopy();
        ((ObjectNode) schemaNode).set("components", openapiSpec.path("components").deepCopy());

        lastValidationErrors = OpenAPISchemaValidator.validateJson(schemaNode, contentNode);
        if (!lastValidationErrors.isEmpty()) {
            log.debug("OpenAPI schema validation errors found " + lastValidationErrors.size()
                    + ", marking test as failed.");
            return TestReturn.FAILURE_CODE;
        }
        log.debug("OpenAPI schema validation of response is successful !");
    } else {
        // Do we still have a response body ??
        if (httpResponse.getHeaders().getContentLength() > 0) {
            log.debug("No response expected or defined but response has content, failing");
            code = TestReturn.FAILURE_CODE;
        }
    }
    return code;
}

From source file:org.apache.geode.management.internal.web.http.support.HttpRequester.java

Object extractResponse(ClientHttpResponse response) throws IOException {
    MediaType mediaType = response.getHeaders().getContentType();
    if (mediaType.equals(MediaType.APPLICATION_JSON)) {
        return org.apache.commons.io.IOUtils.toString(response.getBody(), "UTF-8");
    } else {/*from ww w . j av a 2 s . com*/
        Path tempFile = Files.createTempFile("fileDownload", "");
        if (tempFile.toFile().exists()) {
            FileUtils.deleteQuietly(tempFile.toFile());
        }
        Files.copy(response.getBody(), tempFile);
        return tempFile;
    }
}