All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.http.HttpEntity Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2002-2023 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.http;

import org.springframework.lang.Nullable;
import org.springframework.util.MultiValueMap;
import org.springframework.util.ObjectUtils;

/**
 * Represents an HTTP request or response entity, consisting of headers and body.
 *
 * 

Often used in combination with the {@link org.springframework.web.client.RestTemplate}, * like so: *

 * HttpHeaders headers = new HttpHeaders();
 * headers.setContentType(MediaType.TEXT_PLAIN);
 * HttpEntity<String> entity = new HttpEntity<>("Hello World", headers);
 * URI location = template.postForLocation("https://example.com", entity);
 * 
* or *
 * HttpEntity<String> entity = template.getForEntity("https://example.com", String.class);
 * String body = entity.getBody();
 * MediaType contentType = entity.getHeaders().getContentType();
 * 
* Can also be used in Spring MVC, as a return value from a @Controller method: *
 * @GetMapping("/handle")
 * public HttpEntity<String> handle() {
 *   HttpHeaders responseHeaders = new HttpHeaders();
 *   responseHeaders.set("MyResponseHeader", "MyValue");
 *   return new HttpEntity<>("Hello World", responseHeaders);
 * }
 * 
* * @author Arjen Poutsma * @author Juergen Hoeller * @since 3.0.2 * @param the body type * @see org.springframework.web.client.RestTemplate * @see #getBody() * @see #getHeaders() */ public class HttpEntity { /** * The empty {@code HttpEntity}, with no body or headers. */ public static final HttpEntity EMPTY = new HttpEntity<>(); private final HttpHeaders headers; @Nullable private final T body; /** * Create a new, empty {@code HttpEntity}. */ protected HttpEntity() { this(null, null); } /** * Create a new {@code HttpEntity} with the given body and no headers. * @param body the entity body */ public HttpEntity(T body) { this(body, null); } /** * Create a new {@code HttpEntity} with the given headers and no body. * @param headers the entity headers */ public HttpEntity(MultiValueMap headers) { this(null, headers); } /** * Create a new {@code HttpEntity} with the given body and headers. * @param body the entity body * @param headers the entity headers */ public HttpEntity(@Nullable T body, @Nullable MultiValueMap headers) { this.body = body; this.headers = HttpHeaders.readOnlyHttpHeaders(headers != null ? headers : new HttpHeaders()); } /** * Returns the headers of this entity. */ public HttpHeaders getHeaders() { return this.headers; } /** * Returns the body of this entity. */ @Nullable public T getBody() { return this.body; } /** * Indicates whether this entity has a body. */ public boolean hasBody() { return (this.body != null); } @Override public boolean equals(@Nullable Object other) { if (this == other) { return true; } if (other == null || other.getClass() != getClass()) { return false; } HttpEntity otherEntity = (HttpEntity) other; return (ObjectUtils.nullSafeEquals(this.headers, otherEntity.headers) && ObjectUtils.nullSafeEquals(this.body, otherEntity.body)); } @Override public int hashCode() { return ObjectUtils.nullSafeHash(this.headers, this.body); } @Override public String toString() { StringBuilder builder = new StringBuilder("<"); if (this.body != null) { builder.append(this.body); builder.append(','); } builder.append(this.headers); builder.append('>'); return builder.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy