ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java实现腾讯云短信定时推送天气信息(通俗易懂)

2021-11-27 17:58:00  阅读:190  来源: 互联网

标签:null Java getString req 通俗易懂 new 推送 response 模板


准备:

  • 首先在腾讯云申请自己的短信
  • 腾讯云短信链接
  • 然后再申请签名和正文模板
  • 签名提供材料等待审批通过就可以
  • 模板的模板内容是可以传参数的
  • 例子:我是{1},来自{2},可以添加多个,后续可以通过参数填充,然后等待审批
    在这里插入图片描述

代码:

  • 先导入需要的jar包
		//腾讯云jar包
		<dependency>
			<groupId>com.tencentcloudapi</groupId>
			<artifactId>tencentcloud-sdk-java</artifactId>
			<!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. -->
			<!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
			<version>3.1.322</version>
		</dependency>
		//httpclient包
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.13</version>
		</dependency>
		// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
		//自己的secretId,secretKey
        Credential cred = new Credential(secretId,secretKey);

        // 实例化一个http选项,可选的,没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("sms.tencentcloudapi.com");
        // 实例化一个client选项,可选的,没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        // 实例化要请求产品的client对象,clientProfile是可选的
        SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
        // 实例化一个请求对象,每个接口都会对应一个request对象
        SendSmsRequest req = new SendSmsRequest();
        //要发送的手机号,数组形式可以发送多个
        String[] phoneNumberSet1 = {"+86xxxxxxxx","+86xxxxxx"};
        req.setPhoneNumberSet(phoneNumberSet1);
		//自己的sdkAppId
        req.setSmsSdkAppId("smsSdkAppid");
        //自己申请签名的签名内容,用哪一个短信开头的[]里的内容就是哪个
        //类似于[xx科技]xxxxxx
        req.setSignName("xx");
        //模板id
        req.setTemplateId("xxx");
		//json转天气对象
        JSONObject jsonObject = JSONObject.parseObject(wether()).getJSONObject("data");
        JSONArray forecast = jsonObject.getJSONArray("forecast");
        JSONObject o = forecast.getJSONObject(0);
   		//向短信模板传递参数,依次对应模板内容的{1},{2},{3}...
     	 String[] templateParamSet1 = {o.getString("date"),o.getString("type"), o.getString("high"),o.getString("low"),o.getString("fengxiang")};
     	 //天气格式
         //"{\"date\":\"26日星期五\",\"high\":\"高温 16℃\",\"fengli\":\"<![CDATA[2级]]>\",\"low\":\"低温 10℃\",\"fengxiang\":\"北风\",\"type\":\"晴\"}"
         req.setTemplateParamSet(templateParamSet1);
        // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
        SendSmsResponse resp = client.SendSms(req);
        // 输出json格式的字符串回包
        System.out.println(SendSmsResponse.toJsonString(resp));

天气:

        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        // 创建Get请求
        //在city后边拼接想要获得天气的城市名就可以
        //http://wthrcdn.etouch.cn/weather_mini?city=上海
        HttpGet httpGet = new HttpGet("http://wthrcdn.etouch.cn/weather_mini?city=");
        // 响应模型
        CloseableHttpResponse response = null;
        try {
            // 由客户端执行(发送)Get请求
            response = httpClient.execute(httpGet);
            // 从响应模型中获取响应实体
            HttpEntity responseEntity = response.getEntity();
            if (responseEntity != null) {
               
                return EntityUtils.toString(responseEntity,"utf-8");
            }
        } catch (ParseException | IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // 释放资源
                if (httpClient != null) {
                    httpClient.close();
                }
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
  • 定时保存:
  • 别忘了在类上加@Component和启动类加@EnableScheduling
	//每天早上7.30发
	
	@Scheduled(cron = "00 30 07 * * *")
    public void send() throws TencentCloudSDKException {
        logger.info("时间:{} 发送早上短信请求",simpleDateFormat.format(System.currentTimeMillis()));
        sendSms();
    }
  • 如果springboot时间和服务器时间不对在启动类加
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

标签:null,Java,getString,req,通俗易懂,new,推送,response,模板
来源: https://blog.csdn.net/m0_48358308/article/details/121579958

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有