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 03:14:58
下一篇 2023-05-12 03:15:59

相关推荐

  • [上市]贝斯特:首次公开发行股票并在创业板上市提示公告

    上市提示公告》盖章页)   中财网 保荐机构(主承销商):中信证券股份有限公司 保荐机构(主承销商) 注,并认真阅读今日刊登的《无锡贝斯特精机股份有限公司首次公开发行股票 在中国结算深圳分公司开立证券账户的机构投资者和 保荐机构(主承销商): 010-6083 3640 联系地址 发行日期 保荐机构(主承销商) 台记录为准)由后到前的顺序排序,剔除拟申购总量…

    创业分享 2023-05-27
    99
  • 创业公司要缩招,老板最先想到谁?丨创客小酒馆

    对头部企业缩减招聘的传闻,我也听说了。企业根据发展情况适时调整用工数量,以调节人员成本开支,其实是现代企业经营的重要手段。 部分公司不再委托猎头改走普通招聘 责任编辑: 统筹 / 闫丽娇 我认为,所谓的缩招只是表面现象,它体现的是可能未来三到五年经济环境都不像前几年了。如果只是短期经济下行,我会拼命往前冲,但如果是长期,大家都会受影响。 具体到我们公司,在一…

    2023-05-14
    59
  • 创业公司大逃离 丨 锌式

      他当然明白沟通不畅并不是小姑娘的缘故。   领英年中数据显示,职场人平均在职时间呈现出随代际显著递减的趋势。   分析原因,王飞认为是她在很多地方需要跟别的部门配合。“小姑娘不是能力不行,但要经常跟别人配合。沟通,总会有沟通不畅的时候。这个小姑娘受不了,上个月走了,连年终奖都不要了。”   在很多人看来,年轻的90后与70、80后相比,有着非常不同的职业…

    2023-05-13
    65
  • 79岁老人熊建华热心资助社区贫困大学生 愿把创业方法分享给更多人

    九江新闻网讯(记者 金璐 文/摄)“今天真的太高兴了,回老家后我一直都想为学生们做点什么,终于完成了我的心愿。”8月18日上去,白水湖街道余家垅社区79岁的熊建华与贫困大学生罗娜结成了帮扶对子后,这样对浔阳晚报记者说。一直以来,熊老对贫困家庭孩子上大学的不容易和现在大学生就业创业难感触颇深,表示希望尽自己的一点力量为孩子们多做点事,能资助更多的社区贫困学生,…

    创业分享 2023-05-29
    62
  • 创业加盟童装店?让广州圣驰服饰有限公司为您分析

      再次,童装设计方面要突出时代的潮流感,融合儿童的审美需求。现在的孩子一个个都是人小鬼大,非常的精灵,而且追求个性,喜欢以自我为中心,这一点在穿衣打扮方面更是大多数儿童的共同特点。   品牌:精灵玛可   最后,从童装市场的消费受众来看,主力军主要由80后、90后的新一代父母构成,而且大多数的家庭都是典型的“6+1”结构。也就是说,目前的孩子俘获了整个社会…

    创业分享 2023-05-21
    67

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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