这一部分比较简短。示例见这个项目的mvc分支下的 HttpEntityController.java。
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
在请求和响应流只见进行转换。更多关于这些转换器的消息,参见消息转换器。