HttpEntity的用法

关于HttpEntity的用法

  HttpEntity表示http的request和resposne实体,它由消息头和消息体组成。
 从HttpEntity中可以获取http请求头和回应头,也可以获取http请求体和回应体信息。
HttpEntity的使用,与@RequestBody 、@ResponseBody类似。

HttpEntity的典型应用是配合RestTemplate,在微服务项目中的应用(参见API示例)
用户登录示例:
步骤一:在login.jsp发送ajax请求,发送之前添加请求头信息

$.ajax({
    type: "POST",
    url: targetUrl,
    data: user,//传递的参数
    dataType:"json",//前端可以接收服务器传过来的数据的类型,json
    contentType: "application/json",
    beforeSend: function(xhr){//请求发送之前执行函数,添加请求头
        xhr.setRequestHeader("token","shfashfdasfhdashfoasf");
    },
    success: function(user){
        alert(user.username);
    },
    error:function(){
        alert("异常,请检查");
    }


步骤二:action中提取RequestEntity中的请求头信息,并用ResponseEntity回应

@PostMapping(value = "/login")
@ResponseBody//返回的结果是响应体,返回的类型String,字符串中有中文,乱码了
public ResponseEntity<User> login(@RequestBody String userString, RequestEntity requestEntity) {
    System.out.println(requestEntity.getUrl());
    //通过请求实体对象获取请求头
    HttpHeaders requestHeaders = requestEntity.getHeaders();
    System.out.println(requestHeaders);
    System.out.println(requestHeaders.getContentLength());//内容的长度
    System.out.println(requestHeaders.getContentType());
    System.out.println(requestHeaders.getAccept());
    System.out.println(requestHeaders.getOrigin());
    System.out.println(requestHeaders.getFirst("token"));

    //创建一个响应头
    HttpHeaders responseHeader = new HttpHeaders();
    responseHeader.set("myResponseHeader","myValue");
    //userString绑定的请求体
    //登录成功,拿到一个user对象
    User user = new User();
    user.setUsername(userString.split("&")[0].split("=")[1]);
    user.setPassword(userString.split("&")[1].split("=")[1]);
    user.setId(1000001);
    user.setHead_img("/images/head.jpg");
    user.setBalance(1000);
    //现在返回登录的结果,json格式的字符串
    //user:响应体,responseHeader:响应头,本身就有默认的响应头,在这里是添加其他的响应头的信息
    //HttpStatus:响应的状态码
    return new ResponseEntity<User>(user, responseHeader, HttpStatus.OK);
}


执行结果:


响应的状态码

 添加的


请求头信息

  


请求体

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC提供了一个HttpEntity类,用于封装HTTP请求和响应的实体。 HttpEntity是一个泛型类,可以用于封装各种类型的请求和响应体。它包含了HTTP头信息以及请求/响应的主体内容。 在Spring MVC中,我们可以将参数类型声明为HttpEntity,来接收和处理HTTP请求的实体信息。例如,我们可以将请求体中的JSON数据映射到一个Java对象中: ```java @RequestMapping(value = "/user", method = RequestMethod.POST) public ResponseEntity<String> createUser(@RequestBody HttpEntity<User> requestEntity) { User user = requestEntity.getBody(); // 处理user对象 // ... return new ResponseEntity<>("User created", HttpStatus.CREATED); } ``` 在上述例子中,我们使用了`HttpEntity<User>`作为参数类型来接收请求体中的JSON数据,并将其映射到一个User对象中。我们可以通过调用`getBody()`方法来获取请求体内容。 同样地,我们也可以在响应中使用HttpEntity来封装响应的内容。例如,我们可以返回一个包含JSON数据的HttpEntity对象: ```java @RequestMapping(value = "/user/{id}", method = RequestMethod.GET) public HttpEntity<User> getUser(@PathVariable("id") int id) { User user = userService.getUserById(id); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); return new HttpEntity<>(user, headers); } ``` 在上述例子中,我们使用了`HttpEntity<User>`作为返回类型,并将User对象及自定义的HTTP头信息封装在其中。 总结而言,Spring MVC的HttpEntity类提供了一种方便的方式来封装和处理HTTP请求和响应的实体信息。我们可以使用它来接收和处理请求体中的内容,并将响应数据封装成一个HttpEntity对象返回给客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值