栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

准备:
  • 首先在腾讯云申请自己的短信
  • 腾讯云短信链接
  • 然后再申请签名和正文模板
  • 签名提供材料等待审批通过就可以
  • 模板的模板内容是可以传参数的
  • 例子:我是{1},来自{2},可以添加多个,后续可以通过参数填充,然后等待审批
代码:
  • 先导入需要的jar包
		//腾讯云jar包
		
			com.tencentcloudapi
			tencentcloud-sdk-java
			
			
			3.1.322
		
		//httpclient包
		
			org.apache.httpcomponents
			httpclient
			4.5.13
		
  • 短信:
  • 自己的secretId,secretKey查看地址
  • 自己的sdkAppId查看地址
  • 自己的签名内容查看地址
  • 自己的模板id查看地址
		// 实例化一个认证对象,入参需要传入腾讯云账户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":"","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"));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号