List of usage examples for org.springframework.http.client ClientHttpResponse getHeaders
HttpHeaders getHeaders();
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; } }