@Override public String toString() { StringBuilder builder = new StringBuilder("<"); builder.append(getMethod()); builder.append(' '); builder.append(getUrl()); builder.append(','); T body = getBody(); HttpHeaders headers = getHeaders(); if (body != null) { builder.append(body); builder.append(','); } builder.append(headers); builder.append('>'); return builder.toString(); }
@Override public String toString() { StringBuilder builder = new StringBuilder("<"); builder.append(getMethod()); builder.append(' '); builder.append(getUrl()); builder.append(','); T body = getBody(); HttpHeaders headers = getHeaders(); if (body != null) { builder.append(body); builder.append(','); } builder.append(headers); builder.append('>'); return builder.toString(); }
@Test public void requestEntity() throws Exception { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); String body = "foo"; HttpEntity<String> httpEntity = new HttpEntity<>(body, headers); RequestEntity<String> requestEntity = new RequestEntity<>(body, headers, HttpMethod.GET, new URI("/")); RequestEntity<String> requestEntity2 = new RequestEntity<>(body, headers, HttpMethod.GET, new URI("/")); assertEquals(body, requestEntity.getBody()); assertEquals(MediaType.TEXT_PLAIN, requestEntity.getHeaders().getContentType()); assertEquals("text/plain", requestEntity.getHeaders().getFirst("Content-Type")); assertEquals("text/plain", requestEntity.getHeaders().getFirst("Content-Type")); assertFalse(httpEntity.equals(requestEntity)); assertFalse(requestEntity.equals(httpEntity)); assertTrue(requestEntity.equals(requestEntity2)); assertTrue(requestEntity2.equals(requestEntity)); }
@Test public void get() { RequestEntity<Void> requestEntity = RequestEntity.get(URI.create("http://example.com")).accept( MediaType.IMAGE_GIF, MediaType.IMAGE_JPEG, MediaType.IMAGE_PNG).build(); assertNotNull(requestEntity); assertEquals(HttpMethod.GET, requestEntity.getMethod()); assertTrue(requestEntity.getHeaders().containsKey("Accept")); assertEquals("image/gif, image/jpeg, image/png", requestEntity.getHeaders().getFirst("Accept")); assertNull(requestEntity.getBody()); }
@Test public void normal() throws URISyntaxException { String headerName = "My-Custom-Header"; String headerValue = "HeaderValue"; URI url = new URI("http://example.com"); Integer entity = 42; RequestEntity<Object> requestEntity = RequestEntity.method(HttpMethod.GET, url) .header(headerName, headerValue).body(entity); assertNotNull(requestEntity); assertEquals(HttpMethod.GET, requestEntity.getMethod()); assertTrue(requestEntity.getHeaders().containsKey(headerName)); assertEquals(headerValue, requestEntity.getHeaders().getFirst(headerName)); assertEquals(entity, requestEntity.getBody()); }
@SuppressWarnings("unchecked") @Test public void convertWhenGrantRequestValidThenConverts() { RequestEntity<?> requestEntity = this.converter.convert(this.clientCredentialsGrantRequest); ClientRegistration clientRegistration = this.clientCredentialsGrantRequest.getClientRegistration(); assertThat(requestEntity.getMethod()).isEqualTo(HttpMethod.POST); assertThat(requestEntity.getUrl().toASCIIString()).isEqualTo( clientRegistration.getProviderDetails().getTokenUri()); HttpHeaders headers = requestEntity.getHeaders(); assertThat(headers.getAccept()).contains(MediaType.APPLICATION_JSON_UTF8); assertThat(headers.getContentType()).isEqualTo( MediaType.valueOf(APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8")); assertThat(headers.getFirst(HttpHeaders.AUTHORIZATION)).startsWith("Basic "); MultiValueMap<String, String> formParameters = (MultiValueMap<String, String>) requestEntity.getBody(); assertThat(formParameters.getFirst(OAuth2ParameterNames.GRANT_TYPE)).isEqualTo( AuthorizationGrantType.CLIENT_CREDENTIALS.getValue()); assertThat(formParameters.getFirst(OAuth2ParameterNames.SCOPE)).isEqualTo("read write"); } }
@SuppressWarnings("unchecked") @Test public void convertWhenAuthenticationMethodHeaderThenGetRequest() { ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build(); OAuth2UserRequest userRequest = new OAuth2UserRequest( clientRegistration, this.createAccessToken()); RequestEntity<?> requestEntity = this.converter.convert(userRequest); assertThat(requestEntity.getMethod()).isEqualTo(HttpMethod.GET); assertThat(requestEntity.getUrl().toASCIIString()).isEqualTo( clientRegistration.getProviderDetails().getUserInfoEndpoint().getUri()); HttpHeaders headers = requestEntity.getHeaders(); assertThat(headers.getAccept()).contains(MediaType.APPLICATION_JSON); assertThat(headers.getFirst(HttpHeaders.AUTHORIZATION)).isEqualTo( "Bearer " + userRequest.getAccessToken().getTokenValue()); }
@SuppressWarnings("unchecked") @Test public void convertWhenGrantRequestValidThenConverts() { RequestEntity<?> requestEntity = this.converter.convert(this.authorizationCodeGrantRequest); ClientRegistration clientRegistration = this.authorizationCodeGrantRequest.getClientRegistration(); assertThat(requestEntity.getMethod()).isEqualTo(HttpMethod.POST); assertThat(requestEntity.getUrl().toASCIIString()).isEqualTo( clientRegistration.getProviderDetails().getTokenUri()); HttpHeaders headers = requestEntity.getHeaders(); assertThat(headers.getAccept()).contains(MediaType.APPLICATION_JSON_UTF8); assertThat(headers.getContentType()).isEqualTo( MediaType.valueOf(APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8")); assertThat(headers.getFirst(HttpHeaders.AUTHORIZATION)).startsWith("Basic "); MultiValueMap<String, String> formParameters = (MultiValueMap<String, String>) requestEntity.getBody(); assertThat(formParameters.getFirst(OAuth2ParameterNames.GRANT_TYPE)).isEqualTo( AuthorizationGrantType.AUTHORIZATION_CODE.getValue()); assertThat(formParameters.getFirst(OAuth2ParameterNames.CODE)).isEqualTo("code-1234"); assertThat(formParameters.getFirst(OAuth2ParameterNames.REDIRECT_URI)).isEqualTo( clientRegistration.getRedirectUriTemplate()); } }
@SuppressWarnings("unchecked") @Test public void convertWhenAuthenticationMethodFormThenPostRequest() { ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration() .userInfoAuthenticationMethod(AuthenticationMethod.FORM) .build(); OAuth2UserRequest userRequest = new OAuth2UserRequest( clientRegistration, this.createAccessToken()); RequestEntity<?> requestEntity = this.converter.convert(userRequest); assertThat(requestEntity.getMethod()).isEqualTo(HttpMethod.POST); assertThat(requestEntity.getUrl().toASCIIString()).isEqualTo( clientRegistration.getProviderDetails().getUserInfoEndpoint().getUri()); HttpHeaders headers = requestEntity.getHeaders(); assertThat(headers.getAccept()).contains(MediaType.APPLICATION_JSON); assertThat(headers.getContentType()).isEqualTo( MediaType.valueOf(APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8")); MultiValueMap<String, String> formParameters = (MultiValueMap<String, String>) requestEntity.getBody(); assertThat(formParameters.getFirst(OAuth2ParameterNames.ACCESS_TOKEN)).isEqualTo( userRequest.getAccessToken().getTokenValue()); }
@Test public void headers() throws URISyntaxException { MediaType accept = MediaType.TEXT_PLAIN; long ifModifiedSince = 12345L; String ifNoneMatch = "\"foo\""; long contentLength = 67890; MediaType contentType = MediaType.TEXT_PLAIN; RequestEntity<Void> responseEntity = RequestEntity.post(new URI("http://example.com")). accept(accept). acceptCharset(StandardCharsets.UTF_8). ifModifiedSince(ifModifiedSince). ifNoneMatch(ifNoneMatch). contentLength(contentLength). contentType(contentType). build(); assertNotNull(responseEntity); assertEquals(HttpMethod.POST, responseEntity.getMethod()); assertEquals(new URI("http://example.com"), responseEntity.getUrl()); HttpHeaders responseHeaders = responseEntity.getHeaders(); assertEquals("text/plain", responseHeaders.getFirst("Accept")); assertEquals("utf-8", responseHeaders.getFirst("Accept-Charset")); assertEquals("Thu, 1 Jan 1970 00:00:12 GMT", responseHeaders.getFirst("If-Modified-Since")); assertEquals(ifNoneMatch, responseHeaders.getFirst("If-None-Match")); assertEquals(String.valueOf(contentLength), responseHeaders.getFirst("Content-Length")); assertEquals(contentType.toString(), responseHeaders.getFirst("Content-Type")); assertNull(responseEntity.getBody()); }
@Test public void requestEntity() throws Exception { ServerWebExchange exchange = postExchange("line1"); ResolvableType type = forClassWithGenerics(RequestEntity.class, String.class); RequestEntity<String> requestEntity = resolveValue(exchange, type); assertEquals(exchange.getRequest().getMethod(), requestEntity.getMethod()); assertEquals(exchange.getRequest().getURI(), requestEntity.getUrl()); assertEquals(exchange.getRequest().getHeaders(), requestEntity.getHeaders()); assertEquals("line1", requestEntity.getBody()); }
private Mono<ResponseEntity<T>> exchange(RequestEntity<?> requestEntity) { Type type = this.responseType; RequestBodySpec builder = rest.method(requestEntity.getMethod()) .uri(requestEntity.getUrl()) .headers(headers -> addHeaders(headers, requestEntity.getHeaders())); Mono<ClientResponse> result; if (requestEntity.getBody() instanceof Publisher) { @SuppressWarnings("unchecked") Publisher<Object> publisher = (Publisher<Object>) requestEntity.getBody(); result = builder.body(publisher, Object.class).exchange(); } else if (requestEntity.getBody() != null) { result = builder.body(BodyInserters.fromObject(requestEntity.getBody())) .exchange(); } else { if (hasBody) { result = builder.headers( headers -> addHeaders(headers, exchange.getRequest().getHeaders())) .body(exchange.getRequest().getBody(), DataBuffer.class) .exchange(); } else { result = builder.headers( headers -> addHeaders(headers, exchange.getRequest().getHeaders())) .exchange(); } } return result.flatMap(response -> response.toEntity(ParameterizedTypeReference.forType(type))); }
Map<String, Object> headers = getHeaderMapper().toHeaders(httpEntity.getHeaders()); Object payload = null; if (getPayloadExpression() != null) {
@Override public String toString() { StringBuilder builder = new StringBuilder("<"); builder.append(getMethod()); builder.append(' '); builder.append(getUrl()); builder.append(','); T body = getBody(); HttpHeaders headers = getHeaders(); if (body != null) { builder.append(body); builder.append(','); } builder.append(headers); builder.append('>'); return builder.toString(); }
@Override public String toString() { StringBuilder builder = new StringBuilder("<"); builder.append(getMethod()); builder.append(' '); builder.append(getUrl()); builder.append(','); T body = getBody(); HttpHeaders headers = getHeaders(); if (body != null) { builder.append(body); builder.append(','); } builder.append(headers); builder.append('>'); return builder.toString(); }
@SuppressWarnings({ "rawtypes", "unchecked" }) private RequestEntity<?> createRequestEntityWithRootAppliedUri( RequestEntity<?> requestEntity) { return new RequestEntity(requestEntity.getBody(), requestEntity.getHeaders(), requestEntity.getMethod(), applyRootUriIfNecessary(requestEntity.getUrl()), requestEntity.getType()); }
/** * Builds a {@link ParameterSet} from a {@link RequestEntity}. Currently only supports * JSON payload, and only basic JSON objects that are essentially key-value pairs, where the * values are primitives (String, numeric or boolean). * @param entity The RequestEntity payload, expected to be JSON. * @return a {@link ParameterSet} instance with key-value pairs from the JSON entity, or * and empty instance if there is no body in the entity. */ protected final ParameterSet getParamsFromEntity(RequestEntity<String> entity) { // attempt to build a parameter map from the request entity/payload if (entity != null && entity.hasBody()) { MediaType contentType = entity.getHeaders().getContentType(); String body = entity.getBody(); if (MediaType.APPLICATION_JSON.isCompatibleWith(contentType)) { // parse just a basic key-value styled JSON payload return handleJsonPayload(body); } else if (contentType.getSubtype().equals("xml")) { // handle XML payload return handleXmlPayload(body); } else { getLogger().error("RequestEntity does not have a JSON or XML payload. MediaType: " + contentType); } } return ParameterSetFactory.buildEmptyParameterSet(); }
Map<String, Object> headers = getHeaderMapper().toHeaders(httpEntity.getHeaders()); Object payload = null; if (getPayloadExpression() != null) {