好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SpringCloud Feign请求头删除修改的操作代码

Feign请求头修改删除操作

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

@Configuration

public class ClientConfiguration {

     @Bean

     public RequestInterceptor headerInterceptor() {

         return new RequestInterceptor() {

             @Override

             public void apply(RequestTemplate template) {

                 HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

                 if (httpServletRequest.getRequestURI().contains(template.url())) {

                     try {

                         Field connectorField = ReflectionUtils.findField(SecurityContextHolderAwareRequestWrapper. class , "request" );

                         connectorField.setAccessible( true );

                         FirewalledRequest firewalledRequest = (FirewalledRequest) connectorField.get(httpServletRequest);

                         if (Objects.isNull(firewalledRequest))

                             return ;

 

                         Field firewalledField = ReflectionUtils.findField(FirewalledRequest. class , "request" );

                         firewalledField.setAccessible( true );

                         RequestFacade requestFacade = (RequestFacade) firewalledField.get(firewalledRequest);

                         if (Objects.isNull(requestFacade))

                             return ;

 

                         connectorField = ReflectionUtils.findField(RequestFacade. class , "request" );

                         firewalledField.setAccessible( true );

                         Request connectorRequest = (Request) connectorField.get(requestFacade);

                         if (Objects.isNull(connectorRequest))

                             return ;

 

                         Field coyoteField = ReflectionUtils.findField(Request. class , "coyoteRequest" , org.apache.coyote.Request. class );

                         coyoteField.setAccessible( true );

                         org.apache.coyote.Request coyoteRequest = (org.apache.coyote.Request) coyoteField.get(connectorRequest);

                         if (Objects.isNull(coyoteRequest))

                             return ;

 

                         Field mimeHeadersField = ReflectionUtils.findField(org.apache.coyote.Request. class , "headers" , MimeHeaders. class );

                         mimeHeadersField.setAccessible( true );

                         MimeHeaders mimeHeaders = (MimeHeaders) mimeHeadersField.get(coyoteRequest);

                         mineHeadersHandle(mimeHeaders);

                     } catch (IllegalAccessException e) {

                         e.printStackTrace();

                     }

                     List<String> contentTypeList = Lists.newArrayList( "application/json;charset=UTF-8" );

                     Map<String, Collection<String>> headers = ImmutableMap.of(HttpHeaders.CONTENT_TYPE, contentTypeList);

                     template.headers(headers);

                 }

             }

         };

     }

 

     protected static void mineHeadersHandle(MimeHeaders mimeHeaders) {

         mimeHeaders.removeHeader(HttpHeaders.CONTENT_TYPE);

     }

}

到此这篇关于SpringCloud Feign请求头删除修改的操作代码的文章就介绍到这了,更多相关SpringCloud Feign请求头内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/qq_35764295/article/details/123581222

查看更多关于SpringCloud Feign请求头删除修改的操作代码的详细内容...

  阅读:19次