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

相关推荐

  • 我省首家外资投资运营创业孵化平台落户净月高新区

    作为我省首家由外资投资运营的创业孵化平台,火柴创客空间以“学习在深圳、创业在吉林”为核心,依托东北丰富的资源优势,结合深圳先进的创新理念,打通南北孵化器与创客合作的渠道,使净月区的项目、资本与发达地区对接。长春净月国家高新技术产业开发区科学技术局局长孙海为:“这次我们引进的火柴众创空间,一方面搭建了一个全新的平台,直接让我们吉林省在创新创业方面与香港、深圳等…

    创业分享 2023-05-22
    85
  • 第一师五团开展电商培训 发展创业创新人才

      近年来五团创新机制,优化人才环境,打造人才聚集新高地,建立创新人才培养“四大机制”,搭建创业平台。五团创业园“五大板块”、“一园八区”的格局初具雏形,在南疆果品交易市场回购50%的商铺作为大学生创业基地,启动大学生电子产业园,对入驻园区的创业者,创业园统一和物流进行洽谈,在物流方面争取有利条件,同时进行电子商务与网络创业人才培训系统工程,发展“互联网+”…

    创业分享 2023-05-31
    87
  • 眉山创业开店加盟如何选择

    连锁经营企业可以集中资源用于广告促销,降低广告促销平均成本,有利于连锁企业树立品牌形象。由于总部统筹处理促销、进货、乃至会计事务等,使加盟店能心无旁鹜地专心致力于销售工作。开加盟店的最 大优势就是创业的风险低,创业成功的可能性大,这一点是不少小伙伴选择开加盟店的原因。 在错综复杂的环境中,很多人都不知道该如何选择对自己有利的项目,这里教会大家该如何去选择,并…

    创业分享 2023-05-12
    87
  • LOL训练模式在哪?如何充分利用LOL练习模式提升战斗水平?

    LOL训练模式在哪儿,如何充分利用LOL练习模式来提升操作?LOL训练模式在LOL新版客户端当中已经出现了一段时间,很多玩家们已经在LOL训练模式当中找到了自己的练习方式,那么问题来了,LOL训练模式当中如何在获取最大程度的提升呢。 下载好LOL新版客户端,运行游戏,选择左上角“Play-训练”就可以看到三个不同模式的训练营。   训练的模式介绍: -自动刷…

    创业分享 2023-05-25
    77
  • 郎永淳MARS大赛谈创业:媒体人到创业者的使命感

      二次跨界:成为胖猫创投的合伙人   由多牛传媒和玛斯投资主办的2016MARS创新创业大赛已正式启动,作为发布会的主持人,郎永淳除了曾经的央视新闻联播主播,另外一个重要的身份则是找钢网旗下胖猫创投的合伙人。而本次MARS大赛上,胖猫创投也将作为联合主办投资机构全程参与。   郎永淳介绍,找钢网的业务范围已经覆盖B2B电商、仓储加工、物流运输、金融环节,全…

    创业分享 2023-05-29
    123

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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