feign动态设置数据源(https请求)

1、背景

在使用

springboot-feign/spingcloud-feign时,需要在启动springboot的时候,注入的方式将feigncofing配置好,也就是说项目启动以后只能有一个数据源,且不能修改,在网上找了很多资料没有找到解决方案(网上应该有,只是我没有找到),后面只能是硬着头皮看源码,问题解决 2、代码

其实在这里用的原生的feign,并不是springboot/springcloud封装的feign,废话不说,上代码

public final class HttpsUtil { public static <T> T getRemote(Class<T> apiType, String url, String apiCert, String certPassWord) { // apiCert 是p12文件读了以后的数据,可以把p12文件放在本地,我这里是伪代码了 feign.Client.Default client = FeignClient(apiCert, certPassWord); Decoder decoder = (response, type) -> { final String result = IOUtils.toString(response.body().asInputStream(), StandardCharsets.UTF_8); if (String.class.getName() == type.getTypeName()) { return result; } try { return JSON.parseObject(result, type); } catch (Exception e) { log.error(“json parse exception”); } return result; }; ErrorDecoder errorDecoder = (methodKey, response) -> { try { final String result = IOUtils.toString(response.body().asInputStream(), StandardCharsets.UTF_8); log.info(“feign client decoder response body : {}”, result); throw new SysStatusException(response.status(), result); } catch (IOException e) { log.info(“feign client decoder response error {}”, e); } throw new BizStatusException(response.status(), BizCommMessage.ERROR_MSG); }; T remote = Feign.builder() .decoder(decoder) .errorDecoder(errorDecoder) .client(url) .target(apiType, client); return remote; } public static Client getFeignClient(String apiCert, String certPassWord) { final SSLSocketFactory sslSocketFactory = getSSLSocketFactory(apiCert, certPassWord); feign.Client.Default aDefault = new Client.Default(sslSocketFactory, new NoopHostnameVerifier()); return aDefault; } public static SSLSocketFactory getSSLSocketFactory(String apiCert, String certPassWord) { byte[] bytes = apiCert.getBytes(); try (ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes)) { KeyStore keyStore = KeyStore.getInstance(KEY_STORE_TYPE); keyStore.load(inputStream, certPassWord.toCharArray()); SSLContext sslContext = SSLContexts.custom() // 忽略掉对服务器端证书的校验,特别重要,被这行代码坑过 .loadTrustMaterial((TrustStrategy) (chain, authType) -> true) .loadKeyMaterial(keyStore, certPassWord.toCharArray()) .build(); return sslContext.getSocketFactory(); } catch (IOException e) { log.error(“=======init feign client throw IOException======={}”, e); } catch (KeyStoreException e) { log.error(“=======init feign client throw KeyStoreException======={}”, e); } catch (UnrecoverableKeyException e) { log.error(“=======init feign client throw UnrecoverableKeyException======={}”, e); } catch (CertificateException e) { log.error(“=======init feign client throw CertificateException======={}”, e); } catch (NoSuchAlgorithmException e) { log.error(“=======init feign client throw NoSuchAlgorithmException======={}”, e); } catch (KeyManagementException e) { log.error(“=======init feign client throw KeyManagementException======={}”, e); } return null; } }2.2、 编写请求方法public interface TestRemote { @Override @RequestLine(“POST /apis/{test}/query”) @Headers({“Content-Type: application/json”,“Accept: application/json”}) @Body(“{body}”) String query(@Param(“test”) String test, @Param(“body”) String body); }2.3、发送请求public static void main(String[] args) { TestRemote testRemote = HttpsUtil.getRemote(TestRemote.class,String url, String apiCert, String certPassWord); testRemote.query(“test”,“{\”id\”:1}”); }总结:

这样就可以根据前端传来的参数,切换不同的客户端

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:feign动态设置数据源(https请求) https://www.dachanpin.com/a/cyfx/11395.html

(0)
上一篇 2023-05-12
下一篇 2023-05-12

相关推荐

  • 原百度二号人物向海龙40岁再创业,押注消费场景下2B创投机会

    另外还有一点,在2B赛道的创业,选的垂类赛道必须要是非常擅长,要比别人长很多。摒弃找全才的观念,选择找偏才,某一方面特别擅长,长到一般人追不上他。向海龙认为,在一个领域有长项看事情看得会比较远、比较深,能看到别人看不到的东西。 向海龙认为,提供这样一种服务的话,这个服务的用户或者是客户是非常多的。“我们服务的一个客户,他又服务给他所有的客户,我们相当于是一个…

    2023-05-12
    7100
  • 双创写入联合国决议 天搜集团助燃创业梦

      此外,天搜集团还通过搭建万人创业军团、开展“百里挑一相亲创业”等活动,多渠道、全方位地推进创新创业体系的构建,让每一位有想法能实干的创业者都能在移动互联网的大潮中站稳脚跟。凭借助力双创的种种贡献,天搜集团也在2016年荣获了“中国互联网+双创优秀孵化平台”等荣誉,获得了业内一致好评。   对此,专注于移动互联网领域技术研发与移商生态圈打造的浙江天搜科技股…

    创业分享 2023-05-23
    6000
  • 优万家全屋整装定制五大功能玩转家居消费、创业市场

    家具建材市场一直在变化着,尤其是随着消费市场的改变所带来的行业整顿变革越来越明显。显然,近几年我国家居市场的主要消费主力已经逐渐开始转变为年轻一代,八零后、就零食是主力军,而伴随着人们消费观念的变化,消费市场与创业市场同样也悄悄的迎来变革。其中优万家全屋整装定制为市场做了榜样。 很多人诧异家居企业如何打开年轻化市场?仅仅是进入互联网,打造O2O的模式来改变市…

    创业分享 2023-05-23
    9300
  • 我的世界怎么给龙喂食?龙喜欢吃什么食物

      开抢了!双11创业者优选服务!   在我的世界游戏中,龙也是很常见的,玩家要先驯服它,就要了解龙喜欢吃什么,那么我的世界怎么给龙喂食?龙喜欢吃什么?一起来多了解一下吧!   我的世界怎么给龙喂食   1、首先,把龙蛋放地上右键孵化,一定时间后,龙孵化出来,体型中等,但是这时候是成长期,不吃东西的,如果你用生鱼喂它,会有一串英文提示,大概意思就是这条龙不听…

    创业分享 2023-05-21
    11900
  • “创业特训营”里,导师用亲身经历为创业者答疑解惑

    原标题:“创业特训营”里,导师用亲身经历为创业者答疑解惑 扬子晚报网 10月11日讯 (通讯员 金英 扬子晚报/紫牛新闻记者 郑幼明)9日下午,“创业扶苗行动”之“创业特训营—创业者走进企业”专场活动,在南京市雨花台区软件大道21号E座进行,本次2019年“宁聚计划”创业助推活动,由南京市劳动就业服务管理中心主办。 江苏舜天盛泰工贸有限公司业务负责人吴传斌、…

    2023-05-12
    5100

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信