当前位置: 首页 > news >正文

青岛市做网站优化商城app制作

青岛市做网站优化,商城app制作,贸易网站建设公司,陕西省建设网三类人员1、实例化WebClient对象 其实你也可以使用RestTemplate#xff0c;我这里主要是用到了webflux框架#xff0c;所以需要实例化客户端请求对象 Bean public WebClient webClient(){HttpClient httpClient getHttpClient();return WebClient.builder().clientConnector(new R…1、实例化WebClient对象 其实你也可以使用RestTemplate我这里主要是用到了webflux框架所以需要实例化客户端请求对象 Bean public WebClient webClient(){HttpClient httpClient getHttpClient();return WebClient.builder().clientConnector(new ReactorClientHttpConnector(httpClient)).build(); }private HttpClient getHttpClient() {ConnectionProvider provider ConnectionProvider.builder(你爱咋咋的一般用你项目名即可).maxConnections(500).maxIdleTime(Duration.ofSeconds(10)).maxLifeTime(Duration.ofSeconds(20)).pendingAcquireTimeout(Duration.ofSeconds(30)).pendingAcquireTimer((r, d) - {Timeout t wheel.newTimeout(timeout - r.run(), d.toMillis(), TimeUnit.MILLISECONDS);return () - t.cancel();}).fifo().build();HttpClient httpClient HttpClient.create(provider);return httpClient; }2、发送及有效性测试工具类 import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.tomcat.util.codec.binary.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono;import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Map;import static com.paratera.console.notice.utils.Constants.*;/*** 机器人发送工具类微信飞书钉钉** author huxiang*/ Component Slf4j public class RobotUtil {Autowiredprivate WebClient webClient;/*** 机器人发送消息markdown格式** param robotUrl 机器人地址* param type 类型1微信2飞书3钉钉* param context markdown文本内容* param signSecret 签名校验(飞书钉钉使用可为空,具体要根据用户是否启用签名)*/public void sendMsg(String robotUrl, Integer type, String context, String signSecret) {JSONObject msgObj JSONUtil.createObj();JSONObject mdObj JSONUtil.createObj();switch (type) {case ROBOT_TYPE_WX:msgObj.set(msgtype, markdown);mdObj.set(content, context);msgObj.set(markdown, mdObj);break;case ROBOT_TYPE_FS:if (StringUtils.isNotEmpty(signSecret)) {msgObj getFsSignObj(signSecret);}msgObj.set(msg_type, interactive);mdObj.set(tag, lark_md);mdObj.set(content, context);JSONArray elements JSONUtil.createArray();JSONObject wrapObj JSONUtil.createObj();wrapObj.set(tag, div);wrapObj.set(text, mdObj);elements.put(wrapObj);JSONObject cardObj JSONUtil.createObj();cardObj.set(elements, elements);msgObj.set(card, cardObj);break;case ROBOT_TYPE_DD:if (StringUtils.isNotEmpty(signSecret)) {robotUrl getDdRobotURL(robotUrl, signSecret);}msgObj.set(msgtype, markdown);mdObj.set(title, 通知);mdObj.set(text, context);msgObj.set(markdown, mdObj);break;}webClient.post().uri(robotUrl).contentType(MediaType.APPLICATION_JSON).body(BodyInserters.fromValue(msgObj)).retrieve().bodyToMono(String.class).subscribe(result - {log.info(机器人通知发送结果 result);});}/*** 机器人有效性测试 0表示成功其他表示失败** param robotUrl 机器人地址* param type 类型1微信2飞书3钉钉* param signSecret 签名校验(飞书钉钉使用可为空,具体要根据用户是否启用签名)* return*/public Integer sendTestMsg(String robotUrl, Integer type, String signSecret) {JSONObject msgObj JSONUtil.createObj();JSONObject mdObj JSONUtil.createObj();ObjectMapper mapper new ObjectMapper();switch (type) {case ROBOT_TYPE_WX:msgObj.set(msgtype, markdown);mdObj.set(content, 机器人有效性测试);msgObj.set(markdown, mdObj);break;case ROBOT_TYPE_FS:if (StringUtils.isNotEmpty(signSecret)) {msgObj getFsSignObj(signSecret);}msgObj.set(msg_type, interactive);mdObj.set(tag, lark_md);mdObj.set(content, 机器人有效性测试);JSONArray elements JSONUtil.createArray();JSONObject wrapObj JSONUtil.createObj();wrapObj.set(tag, div);wrapObj.set(text, mdObj);elements.put(wrapObj);JSONObject cardObj JSONUtil.createObj();cardObj.set(elements, elements);msgObj.set(card, cardObj);break;case ROBOT_TYPE_DD:if (StringUtils.isNotEmpty(signSecret)) {robotUrl getDdRobotURL(robotUrl, signSecret);}msgObj.set(msgtype, markdown);mdObj.set(title, 通知);mdObj.set(text, 机器人有效性测试);msgObj.set(markdown, mdObj);break;}MonoString mono webClient.post().uri(robotUrl).contentType(MediaType.APPLICATION_JSON).body(BodyInserters.fromValue(msgObj)).retrieve().bodyToMono(String.class);String result mono.block();try {Map res mapper.readValue(result, Map.class);return (Integer) (res.containsKey(errcode) ? res.get(errcode) : res.get(code));} catch (JsonProcessingException e) {log.error(类型转换异常-RobotUtil.sendTestMsg e);}return -1;}/*** 飞书获取带签名的消息体** return*/public JSONObject getFsSignObj(String signSecret) {JSONObject signObj JSONUtil.createObj();Long timestamp DateUtil.currentSeconds();String sign null;try {//把timestamp\n密钥当做签名字符串String stringToSign timestamp \n signSecret;//使用HmacSHA256算法计算签名Mac mac Mac.getInstance(HmacSHA256);mac.init(new SecretKeySpec(stringToSign.getBytes(StandardCharsets.UTF_8), HmacSHA256));byte[] signData mac.doFinal(new byte[]{});sign Base64.encodeBase64String(signData);} catch (Exception e) {log.error(飞书获取签名失败: e);}if (StringUtils.isEmpty(sign)) {return null;}signObj.set(timestamp, timestamp);signObj.set(sign, sign);return signObj;}/*** 钉钉获取带签名的机器人推送URL** return*/public String getDdRobotURL(String robotUrl, String signSecret) {Long timestamp System.currentTimeMillis();String stringToSign timestamp \n signSecret;String sign null;try {Mac mac Mac.getInstance(HmacSHA256);mac.init(new SecretKeySpec(signSecret.getBytes(UTF-8), HmacSHA256));byte[] signData mac.doFinal(stringToSign.getBytes(UTF-8));sign URLEncoder.encode(Base64.encodeBase64String(signData), UTF-8);} catch (Exception e) {log.error(钉钉获取签名失败: e);}if (StringUtils.isEmpty(sign)) {return null;}return robotUrl timestamp timestamp sign sign;} }
http://www.w-s-a.com/news/139230/

相关文章:

  • 常州做网站的 武进学雷锋_做美德少年网站
  • 怎样建网站赚钱贵州seo和网络推广
  • 创建网站的工具站内seo优化
  • 网站特效 站长查询网网站
  • 百度移动端网站网站建设设计思想
  • 青岛建设官方网站南宁制作企业网站
  • 校园网站建设管理工作制度大网站开发费用
  • 做logo赚钱的网站分类网站 模板
  • 网站建设完成报告织梦网站怎么做备份
  • 邯郸市城乡建设管理局网站vimwiki wordpress
  • 如何修改wordpress站名如何制作公司网站
  • 宁波网站建设与推广方案网站有了备案号之后能做什么
  • 汕头手机端建站模板pinterest app下载
  • 网站主机免费宁波网站建设优化诊断
  • 吧网站做软件的软件下载简单的ui界面制作
  • 陕西网站制作公司网页制作与设计代码
  • 做网站行情郑州微信网站开发
  • 河间网站建设制作null wordpress theme
  • h5网站制作网站开发网站建设文翻译工作
  • 网站建设 税种秦皇岛哪有网站优化公司
  • 专业开发网站设计找人做网页需要多少钱
  • 手机购物网站 建站网站建设网站制作网站设计
  • 基于iview的网站开发模板小程序制作需要什么语言
  • 精美网站设计保定建行网站首页登录
  • 网站建设常见问题做网站保存什么格式最好
  • 营销型网站建设与网页设计网站建设 amp 找VX cp5173
  • 新网站该如何做网站优化呢儿童手工
  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南