把原生Http Connection改为使用Feign请求调用外部接口,在方法上添加注解:
@PostMapping("{接口url}")
@Headers({"Content-Type: application/json"})
返回:
看来用@Headers设置的Content-Type没有生效。@Headers是Feign自带的注册,而@PostMapping是Spring MVC的注解。在@PostMapping中也有header属性,于是改为:
@PostMapping(value = "{接口url}", headers = {"Content-Type: application/json"})
问题依旧。
在@RequestMapping,@PostMapping,@GetMapping中都有两个属性:consumes和produces:
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
于是尝试:
@PostMapping(value = "{接口url}", consumes = "application/json")
请求成功。
@Headers为什么没生效?应该是使用了Spring MVC注解的原因吧,@PostMapping自己有设置Header的方法,而且我在参数上也用了@RequestHeader(传入也未生效)。header属性未生效是因为header属性并不是设置请求header的。关于headers和params属性的解释:
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
params:指定request中必须包含某些参数值是,才让该方法处理。
问题解决,Mark!
发表回复