@Test
  public void headers() throws URISyntaxException {
    MediaType accept = MediaType.TEXT_PLAIN;
    Charset charset = Charset.forName("UTF-8");
    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(charset)
            .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, 01 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 methods() throws URISyntaxException {
    URI url = new URI("http://example.com");

    RequestEntity<?> entity = RequestEntity.get(url).build();
    assertEquals(HttpMethod.GET, entity.getMethod());

    entity = RequestEntity.post(url).build();
    assertEquals(HttpMethod.POST, entity.getMethod());

    entity = RequestEntity.head(url).build();
    assertEquals(HttpMethod.HEAD, entity.getMethod());

    entity = RequestEntity.options(url).build();
    assertEquals(HttpMethod.OPTIONS, entity.getMethod());

    entity = RequestEntity.put(url).build();
    assertEquals(HttpMethod.PUT, entity.getMethod());

    entity = RequestEntity.patch(url).build();
    assertEquals(HttpMethod.PATCH, entity.getMethod());

    entity = RequestEntity.delete(url).build();
    assertEquals(HttpMethod.DELETE, entity.getMethod());
  }
  @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());
  }