FeignConfig.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.tofly.xrtymis.config;
  2. import com.alibaba.fastjson.JSON;
  3. import feign.Request;
  4. import feign.RequestInterceptor;
  5. import feign.RequestTemplate;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.springframework.web.context.request.RequestContextHolder;
  8. import org.springframework.web.context.request.ServletRequestAttributes;
  9. import javax.servlet.http.HttpServletRequest;
  10. import java.lang.reflect.Field;
  11. import java.util.Iterator;
  12. import java.util.Map;
  13. import java.util.Set;
  14. public class FeignConfig implements RequestInterceptor {
  15. @Override
  16. public void apply(RequestTemplate requestTemplate) {
  17. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  18. assert attributes != null;
  19. HttpServletRequest request = attributes.getRequest();
  20. //添加token
  21. requestTemplate.header("Authorization", request.getHeader("Authorization"));
  22. //将body的数据写入参数
  23. if("GET".equals(requestTemplate.method())){
  24. try{
  25. //获取body内容
  26. String json = requestTemplate.requestBody().asString();
  27. if (StringUtils.isEmpty(json)) {
  28. return ;
  29. }
  30. Map<String, Object> map= JSON.parseObject(json);
  31. Set<String> set = map.keySet();
  32. Iterator<String> it = set.iterator();
  33. while (it.hasNext()) {
  34. String key = (String) it.next();
  35. Object values = map.get(key);
  36. if (values!=null && !"".equals(values) && !"null".equals(values)) {
  37. //将body的参数写入queries
  38. requestTemplate.query(key,values.toString());
  39. }
  40. }
  41. Class requestClass=requestTemplate.getClass();
  42. Field field = requestClass.getDeclaredField("body");
  43. field.setAccessible(true);
  44. //修改body为空。
  45. field.set(requestTemplate, Request.Body.empty());
  46. }catch (Exception e){
  47. }
  48. }
  49. }
  50. }