import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.web.client.RestTemplate;
public static String handelPost(String url, String body){
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
HttpEntity<String> formEntity = new HttpEntity<>(body, headers);
String str= restTemplate.postForEntity(url, formEntity, String.class).getBody();
return str;
}
HttpEntity和@RequestBody和@ResponseBody很像。除了能夠訪問請求和響應體,HttpEntity(和子類ResponseEntity)也能訪問請求(和響應)頭
@RequestMapping("/something")
public ResponseEntity<String> handle(HttpEntity<byte[]> requestEntity) throws UnsupportedEncodingException
{ String requestHeader = requestEntity.getHeaders().getFirst("MyRequestHeader"); byte[] requestBody = requestEntity.getBody(); // do something with request header and body HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.set("MyResponseHeader", "MyValue"); return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED); }
上面的例子獲取MyRequestHeader請求頭的值,讀取請求體為字節數組。還把MyResponseHeader添加到響應中,把Hello World寫到響應流中,並設置響應狀態碼為 201(創建)。
就像@RequestBody和@ResponseBody一樣,Spring 使用HttpMessageConverter在請求和響應流之間進行轉換。