/** * Sets the cookies on this request by overwriting the value of the "Cookie" header. * * @param cookies cookies * @return {@code this} */ public Builder cookies(Collection<RequestCookie> cookies) { requireNonNull(cookies); headers.remove(COOKIE); if (!cookies.isEmpty()) { header(COOKIE, encode(cookies)); } return this; }
private void setHostHeader() { url.authority() .ifPresent(authority -> header(HOST, authority.hostAndPort())); }
private void setHostHeader() { url.authority() .ifPresent(authority -> header(HOST, authority.hostAndPort())); }
@Test public void convertsToStreamingHttpRequest() throws Exception { HttpRequest fullRequest = new HttpRequest.Builder(POST, "/foo/bar").body("foobar", UTF_8) .version(HTTP_1_1) .header("HeaderName", "HeaderValue") .cookies(requestCookie("CookieName", "CookieValue")) .build(); LiveHttpRequest streaming = fullRequest.stream(); assertThat(streaming.method(), is(HttpMethod.POST)); assertThat(streaming.url(), is(url("/foo/bar").build())); assertThat(streaming.version(), is(HTTP_1_1)); assertThat(streaming.headers(), containsInAnyOrder( header("Content-Length", "6"), header("HeaderName", "HeaderValue"), header("Cookie", "CookieName=CookieValue"))); assertThat(streaming.cookies(), contains(requestCookie("CookieName", "CookieValue"))); StepVerifier.create(streaming.aggregate(0x10000).map(it -> it.bodyAs(UTF_8))) .expectNext("foobar") .verifyComplete(); }
/** * Sets the request body. * <p> * This method encodes the content to a byte array provided, and * sets the Content-Length header *if* the setContentLength * argument is true. * * @param content request body * @param setContentLength If true, Content-Length header is set, otherwise it is not set. * @return {@code this} */ public Builder body(byte[] content, boolean setContentLength) { this.body = content != null ? content.clone() : new byte[0]; if (setContentLength) { header(CONTENT_LENGTH, this.body.length); } return this; }
@Test public void transformsRequest() { HttpRequest request = get("/foo") .header("remove", "remove") .build(); HttpRequest newRequest = request.newBuilder() .method(DELETE) .uri("/home") .header("remove", "notanymore") .build(); assertThat(newRequest.method(), is(DELETE)); assertThat(newRequest.url().path(), is("/home")); assertThat(newRequest.headers(), hasItem(header("remove", "notanymore"))); }
@Test public void canUseBuilderToSetRequestProperties() { HttpRequest request = patch("https://hotels.com") .version(HTTP_1_1) .id("id") .header("headerName", "a") .cookies(requestCookie("cfoo", "bar")) .build(); assertThat(request.toString(), is("HttpRequest{version=HTTP/1.1, method=PATCH, uri=https://hotels.com, " + "headers=[headerName=a, Cookie=cfoo=bar, Host=hotels.com], id=id}")); assertThat(request.headers("headerName"), is(singletonList("a"))); }
private HttpRequest newHealthCheckRequestFor(Origin origin) { return HttpRequest.get(healthCheckUri) .header(HOST, origin.hostAndPortString()) .build(); }
/** * Enables Keep-Alive. * * @return {@code this} */ public Builder enableKeepAlive() { return header(CONNECTION, KEEP_ALIVE); }
@Test public void createsRequestBuilderFromRequest() { HttpRequest originalRequest = get("/home") .cookies(requestCookie("fred", "blogs")) .header("some", "header") .build(); HttpRequest clonedRequest = originalRequest.newBuilder().build(); assertThat(clonedRequest.method(), is(originalRequest.method())); assertThat(clonedRequest.url(), is(originalRequest.url())); assertThat(clonedRequest.headers().toString(), is(originalRequest.headers().toString())); assertThat(clonedRequest.body(), is(originalRequest.body())); }
private HttpRequest newHealthCheckRequestFor(Origin origin) { return get(healthCheckUri) .header(HOST, origin.hostAsString()) .build(); }
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Invalid Content-Length found. -3") public void ensuresContentLengthIsPositive() { HttpRequest.post("/y") .header("Content-Length", -3) .build(); } }
@Test public void canRemoveAHeader() { Object hdValue = "b"; HttpRequest request = get("/") .header("a", hdValue) .addHeader("c", hdValue) .build(); HttpRequest shouldRemoveHeader = request.newBuilder() .removeHeader("c") .build(); assertThat(shouldRemoveHeader.headers(), contains(header("a", "b"))); }