您的位置:首页 > 编程语言 > Java开发

spring cloud feign 调用微服务转发不了request请求头和参数问题解决方案

2017-12-18 17:01 1166 查看

spring cloud feign 调用微服务转发不了request请求头和参数问题解决方案

问题:开发中发现feign调用的微服务获取不到参数,查看文档吧一天终于扒到了解决方案;原理:为feign添加拦截,修改默认config,为feign请求添加原request的请求头以及参数!

相关代码如下:

代码块

@Configuration
public class FeignConfiguration {
private Logger logger = LoggerFactory.getLogger(FeignConfiguration.class);

@Bean
public RequestInterceptor requestInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
template.header(name, values);
}
}
Enumeration<String> bodyNames = request.getParameterNames();
StringBuffer body =new StringBuffer();
if (bodyNames != null) {
while (bodyNames.hasMoreElements()) {
String name = bodyNames.nextElement();
String values = request.getParameter(name);
body.append(name).append("=").append(values).append("&");
}
}
if(body.length()!=0) {
body.deleteCharAt(body.length()-1);
template.body(body.toString());
logger.info("feign interceptor body:{}",body.toString());
}
}
};
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring spring-cloud feign
相关文章推荐