欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMvc获取请求头请求体消息过程解析

程序员文章站 2022-04-21 08:17:27
spring mvc 通过分析处理方法的签名,将 http 请求信 息绑定到处理方法的相应入参中。 spring mvc 对控制器处理方法签名的限制是很宽松的, 几乎可以按喜欢的任何方式对方法进行签...

spring mvc 通过分析处理方法的签名,将 http 请求信 息绑定到处理方法的相应入参中。

  • spring mvc 对控制器处理方法签名的限制是很宽松的, 几乎可以按喜欢的任何方式对方法进行签名。
  • 必要时可以对方法及方法入参标注相应的注解(@pathvariable、@requestparam、@requestheader等)、spring mvc 框架会将 http 请求的信息绑定到相应的方法入参 中,并根据方法的返回值类型做出相应的后续处理。

  对接第三方服务,说传递的post请求中,request header中有需要的参数,request body为xml格式,包括创建消息正文和属性。

  刚开始我以为可以通过 httpservletrequest 来获取到requestbody 中的内容的,比如request.getparameter("topicowner"); 可以取到需要的参数,简直 too yang。

  应该是通过 @requestbody string body 这样的注解来完成的,得到的是string 字符串

  描述的是:request body为xml格式。那么怎么可能通过getparameter 获取到参数呢。只能得到body的string格式啊,然后再自己解析

  这么一个坑还烧了那么多脑细胞。。。

  同样@requestheader("authorization") string authorization, 可以很方便的获取到requestheader ,但是只能一个一个获取

  可以通过httpservletrequest 获取到所有的requestheader,如下:

enumeration<string> headernames = request.getheadernames();
while (headernames.hasmoreelements()) {
  //获取每个请求头名称
  string headername = headernames.nextelement();
  //跟距请求头获取请求值
  string value = request.getheader(headername);
  system.out.println(headername + " : " + value);
  log.error(headername + " : " + value);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。