分类
Java 笔记 编程

Feign设置header无效

把原生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!

发表评论

电子邮件地址不会被公开。