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

相关推荐

  • 年轻就是要敢闯——记市中区返乡创业党员李树刚

    李树刚承包的鱼塘 2012年年底,本在浙江打工的市中区伏龙镇牛角田村村民李树刚回到家乡创业,先后创办榨油坊和承包鱼塘。经过6年多的打拼,他不仅实现了自身价值,同时也用自己的经历,证明广阔农村已逐渐成为当代年轻人实现价值的梦想之地。 不少同学、朋友听闻他的创业经历后,也打算回家创业——“还是你的眼光看得远,提前回家创业,几年时间,就把鱼塘和榨油坊发展这么好。以…

    2023-05-13
    115
  • 创业,当何以降伏其心?

    全渠道超3000w+曝光量 Neo总结王阳明的心学其实是一个广阔宇宙,他目前的阶段也只是到了“哑巴吃蜜”,可能在一些事情处理上,他可以偶尔做到“以心役物,而不被物役心”,而这种感觉是非常舒服的。 心与创业 2004年,Neo看到了自己在公司的职业天花板,不离开,可能5年后也还是副总。出于想要挑战更有难度的事情,于是从公司离职了。离职后,便和朋友回到福建的老家…

    创业分享 2023-05-12
    173
  • 创业板指跌超1% A股避风港成色如何?私募机构把脉后市 投资基金

    原标题:创业板指跌超1% A股避风港成色如何?私募机构把脉后市 投资基金该怎么做? 来源:天天基金网    3月11日,A股三大股指持续震荡,沪指盘中冲上3000点后回落,创业板指跌超1%,截止发稿,沪指跌0.30%,报2987.58点;深成指跌0.81%,报11312.03点;创业板指跌1.04%,报2126.68点。同时,美股三大指数期货均跌近2%。  …

    2023-05-11
    189
  • 沈阳:大东区面向社会征集创业项目

    10月18日,大东区政府联合创世界-众创空间、E-MBA云商学院、精一天使公社面向社会征集创业项目。 此次征集不限行业、不限身份,只要有想法即可免费参加海选。入选的项目将参加优秀项目路演会,通过创业商业计划书直通车优先推荐给投资人。优秀项目可进入天使圈创业者学院深造,晋级即可领取6000元奖学金,并参加创业MBA精英班学习。 [责任编辑:] (责任编辑:ad…

    创业分享 2023-05-28
    110
  • 大盘出现买点,但明日看创业板指的脸色开仓

    6.6复盘日志:大盘出现买点,但明日看创业板指的脸色开仓 1、投资理念:客观遵守交易信号,大盘不好不开仓。盘后冷静复盘,杜绝在盘中武断决策。坚持计划、严守纪律、稳健盈利、快乐投资。 2、大势解读:①日内计算:大盘今日低开后跌到3109点的极限位3076点附近出现急涨,初始分形较大,由3078计算可知,其最大反弹位为3120点,上涨区间为3134-3151点。…

    2023-05-23
    104

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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