@Override public boolean isEmpty() { return this.headers.isEmpty(); }
private String formatHeaders(HttpHeaders headers) { return this.enableLoggingRequestDetails ? headers.toString() : headers.isEmpty() ? "{}" : "{masked}"; } }
private String formatHeaders(HttpHeaders responseHeaders) { return this.enableLoggingRequestDetails ? responseHeaders.toString() : responseHeaders.isEmpty() ? "{}" : "{masked}"; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(this.httpMethod); sb.append(" ").append(this.uri); if (!getHeaders().isEmpty()) { sb.append(", headers: ").append(getHeaders()); } if (sb.length() == 0) { sb.append("Not yet initialized"); } return sb.toString(); }
@Override @SuppressWarnings("resource") public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception { mavContainer.setRequestHandled(true); Assert.state(returnValue instanceof HttpHeaders, "HttpHeaders expected"); HttpHeaders headers = (HttpHeaders) returnValue; if (!headers.isEmpty()) { HttpServletResponse servletResponse = webRequest.getNativeResponse(HttpServletResponse.class); Assert.state(servletResponse != null, "No HttpServletResponse"); ServletServerHttpResponse outputMessage = new ServletServerHttpResponse(servletResponse); outputMessage.getHeaders().putAll(headers); outputMessage.getBody(); // flush headers } }
@Override public Mono<Void> writeTo(ClientHttpRequest request, ExchangeStrategies strategies) { HttpHeaders requestHeaders = request.getHeaders(); if (!this.headers.isEmpty()) { this.headers.entrySet().stream() .filter(entry -> !requestHeaders.containsKey(entry.getKey()))
@SuppressWarnings("unchecked") private void writePart(String name, HttpEntity<?> partEntity, OutputStream os) throws IOException { Object partBody = partEntity.getBody(); if (partBody == null) { throw new IllegalStateException("Empty body for part '" + name + "': " + partEntity); } Class<?> partType = partBody.getClass(); HttpHeaders partHeaders = partEntity.getHeaders(); MediaType partContentType = partHeaders.getContentType(); for (HttpMessageConverter<?> messageConverter : this.partConverters) { if (messageConverter.canWrite(partType, partContentType)) { Charset charset = isFilenameCharsetSet() ? StandardCharsets.US_ASCII : this.charset; HttpOutputMessage multipartMessage = new MultipartHttpOutputMessage(os, charset); multipartMessage.getHeaders().setContentDispositionFormData(name, getFilename(partBody)); if (!partHeaders.isEmpty()) { multipartMessage.getHeaders().putAll(partHeaders); } ((HttpMessageConverter<Object>) messageConverter).write(partBody, partContentType, multipartMessage); return; } } throw new HttpMessageNotWritableException("Could not write request: no suitable HttpMessageConverter " + "found for request type [" + partType.getName() + "]"); }
@Test public void noHeaders() { String body = "foo"; HttpEntity<String> entity = new HttpEntity<>(body); assertSame(body, entity.getBody()); assertTrue(entity.getHeaders().isEmpty()); }
@Override public void onSuccess(ResponseEntity<String> entity) { assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); } @Override
@Test public void getEntity() throws Exception { Future<ResponseEntity<String>> future = template.getForEntity(baseUrl + "/{method}", String.class, "get"); ResponseEntity<String> entity = future.get(); assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }
@Test // SPR-12792 public void headersCopyWithEmptyAndNull() { ResponseEntity<Void> responseEntityWithEmptyHeaders = ResponseEntity.ok().headers(new HttpHeaders()).build(); ResponseEntity<Void> responseEntityWithNullHeaders = ResponseEntity.ok().headers(null).build(); assertEquals(HttpStatus.OK, responseEntityWithEmptyHeaders.getStatusCode()); assertTrue(responseEntityWithEmptyHeaders.getHeaders().isEmpty()); assertEquals(responseEntityWithEmptyHeaders.toString(), responseEntityWithNullHeaders.toString()); }
@Test public void getEntityFromCompletable() throws Exception { ListenableFuture<ResponseEntity<String>> future = template.getForEntity(baseUrl + "/{method}", String.class, "get"); ResponseEntity<String> entity = future.completable().get(); assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }
@Test public void getEntity() { ResponseEntity<String> entity = template.getForEntity(baseUrl + "/{method}", String.class, "get"); assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }
@Test public void getEntityCallbackWithLambdas() throws Exception { ListenableFuture<ResponseEntity<String>> futureEntity = template.getForEntity(baseUrl + "/{method}", String.class, "get"); futureEntity.addCallback((entity) -> { assertEquals("Invalid content", helloWorld, entity.getBody()); assertFalse("No headers", entity.getHeaders().isEmpty()); assertEquals("Invalid content-type", textContentType, entity.getHeaders().getContentType()); assertEquals("Invalid status code", HttpStatus.OK, entity.getStatusCode()); }, ex -> fail(ex.getMessage())); waitTillDone(futureEntity); }
@Test public void withStatus() throws Exception { DefaultResponseCreator responseCreator = MockRestResponseCreators.withStatus(HttpStatus.FORBIDDEN); MockClientHttpResponse response = (MockClientHttpResponse) responseCreator.createResponse(null); assertEquals(HttpStatus.FORBIDDEN, response.getStatusCode()); assertTrue(response.getHeaders().isEmpty()); assertEquals(0, StreamUtils.copyToByteArray(response.getBody()).length); }
@Test public void success() throws Exception { MockClientHttpResponse response = (MockClientHttpResponse) MockRestResponseCreators.withSuccess().createResponse(null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertTrue(response.getHeaders().isEmpty()); assertEquals(0, StreamUtils.copyToByteArray(response.getBody()).length); }
@Test public void unauthorized() throws Exception { DefaultResponseCreator responseCreator = MockRestResponseCreators.withUnauthorizedRequest(); MockClientHttpResponse response = (MockClientHttpResponse) responseCreator.createResponse(null); assertEquals(HttpStatus.UNAUTHORIZED, response.getStatusCode()); assertTrue(response.getHeaders().isEmpty()); assertEquals(0, StreamUtils.copyToByteArray(response.getBody()).length); }
@Test public void noContent() throws Exception { DefaultResponseCreator responseCreator = MockRestResponseCreators.withNoContent(); MockClientHttpResponse response = (MockClientHttpResponse) responseCreator.createResponse(null); assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); assertTrue(response.getHeaders().isEmpty()); assertEquals(0, StreamUtils.copyToByteArray(response.getBody()).length); }
@Test public void badRequest() throws Exception { DefaultResponseCreator responseCreator = MockRestResponseCreators.withBadRequest(); MockClientHttpResponse response = (MockClientHttpResponse) responseCreator.createResponse(null); assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode()); assertTrue(response.getHeaders().isEmpty()); assertEquals(0, StreamUtils.copyToByteArray(response.getBody()).length); }
@Test public void serverError() throws Exception { DefaultResponseCreator responseCreator = MockRestResponseCreators.withServerError(); MockClientHttpResponse response = (MockClientHttpResponse) responseCreator.createResponse(null); assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode()); assertTrue(response.getHeaders().isEmpty()); assertEquals(0, StreamUtils.copyToByteArray(response.getBody()).length); }