1、微信小程序向SpringMVC发起GET请求时,将header的content-type设置成application/json,服务端可以正常接收和返回数据,请求成功。
2、但是当我发起POST请求时,服务端无法接收到数据,全部都是null。
3、上网搜索解决方法,说是要在小程序端将content-type改成x-www-form-urlencoded服务端就能接收数据了,但是依然无法接收到数据。
4、有网友说要配置CommonsMultipartResolver,于是我在spring-mvc.xml的配置文件中添加配置。
在pom中加入依赖
仍然没有接收到数据。
5、后面又有网友说,要在参数前面加入@RequestBody 注解,并且引入三个包:
6、我又把小程序端的POST请求的content-type设置成application/json之后。重新测试之后。SpringMVC后台接收到了小程序端发来的数据。
7、经过这么多的操作步骤之后,我不清楚到底是哪一个配置起了作用,或者说都起到了作用,于是,我将spring-mvc.xml的CommonsMultipartResolver配置注释掉,注释掉,pom中commons-fileupload和commons-io依赖,经测试,SpringMVC后台仍然可以接收到数据。于是可以确定不是CommonsMultipartResolver配置起作用。
8、将SpringMVC接口的@RequestBody注释掉,重新测试后,发现SpringMVC接收的数据全部是null,于是可以确定是@RequestBody起了作用。
9.将pom中的jacson相关的三个依赖注释掉,重新测试,发现出现了415的错误。于是可以确定,这三个依赖也起到了作用。
10.将小程序端的header的content-type改成x-www-form-urlencoded,重新测试。出现了415的错误,所以content-type也起了作用。
总结:综上所述,SpringMVC后台要接收微信小程序POST请求的参数的话要在三个地方着手:
引入Jackson三个pom依赖+controller层接口的参数前加@RequestBody注解+小程序端的content-type设置成application/json注解