@Override public ClientResponse build() { ClientHttpResponse httpResponse = new BuiltClientHttpResponse(this.statusCode, this.headers, this.cookies, this.body); // When building ClientResponse manually, the ClientRequest.logPrefix() has to be passed, // e.g. via ClientResponse.Builder, but this (builder) is not used currently. return new DefaultClientResponse(httpResponse, this.strategies, ""); }
/** * Create an {@code ExchangeFunction} with the given {@code ClientHttpConnector}. * This is the same as calling * {@link #create(ClientHttpConnector, ExchangeStrategies)} and passing * {@link ExchangeStrategies#withDefaults()}. * @param connector the connector to use for connecting to servers * @return the created {@code ExchangeFunction} */ public static ExchangeFunction create(ClientHttpConnector connector) { return create(connector, ExchangeStrategies.withDefaults()); }
/** * Variant of {@link #create()} that accepts a default base URL. For more * details see {@link Builder#baseUrl(String) Builder.baseUrl(String)}. * @param baseUrl the base URI for all requests * @see #builder() */ static WebClient create(String baseUrl) { return new DefaultWebClientBuilder().baseUrl(baseUrl).build(); }
@Test public void sseAsEventWithoutAcceptHeader() { Flux<ServerSentEvent<Person>> result = this.webClient.get() .uri("/event") .accept(TEXT_EVENT_STREAM) .retrieve() .bodyToFlux(new ParameterizedTypeReference<ServerSentEvent<Person>>() {}); verifyPersonEvents(result); }
@Override public Mono<ClientResponse> exchange() { ClientRequest request = (this.inserter != null ? initRequestBuilder().body(this.inserter).build() : initRequestBuilder().build()); return exchangeFunction.exchange(request).switchIfEmpty(NO_HTTP_CLIENT_RESPONSE_ERROR); }
@Override public WebTestClient.Builder filter(ExchangeFilterFunction filter) { this.webClientBuilder.filter(filter); return this; }
/** * Create a response builder with the given status code and using default strategies for * reading the body. * @param statusCode the status code * @return the created builder */ static Builder create(HttpStatus statusCode) { return create(statusCode, ExchangeStrategies.withDefaults()); }
@Override public WebTestClient.Builder defaultHeaders(Consumer<HttpHeaders> headersConsumer) { this.webClientBuilder.defaultHeaders(headersConsumer); return this; }
@Override public List<HttpMessageReader<?>> messageReaders() { return strategies.messageReaders(); } @Override
@Override public List<HttpMessageWriter<?>> messageWriters() { return strategies.messageWriters(); } @Override
@Override public WebTestClient.Builder defaultCookies( Consumer<MultiValueMap<String, String>> cookiesConsumer) { this.webClientBuilder.defaultCookies(cookiesConsumer); return this; }
@Override public ResponseSpec retrieve() { return new DefaultResponseSpec(exchange(), this::createRequest); }
/** * Filters this exchange function with the given {@code ExchangeFilterFunction}, resulting in a * filtered {@code ExchangeFunction}. * @param filter the filter to apply to this exchange * @return the filtered exchange * @see ExchangeFilterFunction#apply(ExchangeFunction) */ default ExchangeFunction filter(ExchangeFilterFunction filter) { return filter.apply(this); }
/** * Return a builder pre-configured with default configuration to start. * This is the same as {@link #withDefaults()} but returns a mutable builder * for further customizations. */ static Builder builder() { DefaultExchangeStrategiesBuilder builder = new DefaultExchangeStrategiesBuilder(); builder.defaultConfiguration(); return builder; }
@Override public RequestBodySpec attributes( Consumer<Map<String, Object>> attributesConsumer) { this.bodySpec.attributes(attributesConsumer); return this; }
@Override public RequestBodySpec headers(Consumer<HttpHeaders> headersConsumer) { this.bodySpec.headers(headersConsumer); return this; }
@Override public RequestBodySpec acceptCharset(Charset... acceptableCharsets) { this.bodySpec.acceptCharset(acceptableCharsets); return this; }
@Override public RequestBodySpec ifModifiedSince(ZonedDateTime ifModifiedSince) { this.bodySpec.ifModifiedSince(ifModifiedSince); return this; }
@Override public RequestBodySpec ifNoneMatch(String... ifNoneMatches) { this.bodySpec.ifNoneMatch(ifNoneMatches); return this; }