车辆违章查询和限行提醒程序 -- (1) 限行提醒功能的实现和接入短信接口

闲来无事,想做一个小网站,方便查询车辆违章信息,后来一想直接写个程序,每天定时查询违章信息,有了违章则发短信和邮件提醒用户,还可以自定义限行策略,在限号那天提醒用户,美哉,嘿嘿♪(^∇^*)。

程序整体设计思路

初步打算用Java写这个程序,基于Servlet,后期开放用户注册,会加上数据库。或许后面会用SSM写,先挖个坑,Σ( ° △ °|||)︴

车辆限号提醒:用户须在本网站注册,然后填写车牌号。【车牌号前端实现正则表达式检测,根据首字和首字母,及尾号实现自动识别城市及限号提醒,一个用户最多支持3个车牌号提醒】。在用户的车辆被限制通行的当天早7:00发短信和邮件通知用户【用户自定义提醒时间和通知类型】。同时,用户登陆网站首页后,提示当天是否限行,以及违章信息。

车辆违章查询:购买数据接口,解析json结果,程序判断是否有违章信息并通知用户。

一 限号提醒功能的设计与实现

由于各地车辆限行政策的多变性和不确定性,其限行逻辑实现由人工维护。初级阶段仅仅通过用户的车牌号实现限号当天提醒(基本上就是单双号限行和两号限行)。

二 寻找短信接口运营商

这个短信API直接百度搜索就行,我也没有特别推荐的运营商,目前我们需要的是便宜的数据接口,最好注册就免费送一定数量的,便于我们前期调试程序,综合下来下面这两家还行(但也都适合企业用,个人数据接口很少厂商做):

聚合数据:https://www.juhe.cn

极速数据:https://www.jisuapi.com (之前做微信公众号就用的这家)

任选一家注册账号即可,短信接口我选的是聚合数据,这家注册送10条免费短信,足够我们测试用了,后期还可以1.5元买50条:

三 解析短息API文档

短信接口文档链接:https://www.juhe.cn/docs/api/id/54

短信这方面国家管控比较严格,所以使用短信接口发送的短息内容必须用运营商提供的模板,如果想要自定义带变量的模板必须实名认证才行,并且这个聚合数据想购买产品必须实名认证,否则自定义内容只能写死,且由运营商后台人工审核通过才可以使用。

如果发送验证码之类的可以使用运营商提供的模板,我们现在需要先自定义模板,然后提交审核,注意:模板内容不能有违法内容和网址等等。

提交模板后等待审核即可,一般一个小时左右:

诸如此类规则各个运营商都大同小异,我们下面详细分析如何使用短信接口。

注意,向每个用户发送短信频率要控制好,如果做验证码之类的,前端一定要做好限制措施,1分钟只能发一条。

使用数据接口实质上就是:发送一个请求给接口,接口会解析你的请求并做出相应操作,然后返回给你操作结果我们需要做的就是发送请求,解析结果。

示例请求链接:

http://v.juhe.cn/sms/send?mobile=用户手机号码&tpl_id=短信模板ID&tpl_value=%23code%23%3D654654&key=自己的账户key

实际上网站的文档已经给的很详细了,只需要复制下来就能运行,非常简单的,我们这里用的Java写的,我只贴出重要代码:

public static void mobileQuery(){
    String result =null;
    String url ="http://v.juhe.cn/sms/send";//请求接口地址
    Map params = new HashMap();//请求参数
      params.put("mobile","13429667914");//接受短信的用户手机号码
                        params.put("tpl_id","111");//您申请的短信模板ID,根据实际情况修改
                        params.put("tpl_value","#code#=1235231");//您设置的模板变量,根据实际情况修改
      params.put("key","您申请的ApiKey");//应用APPKEY(应用详细页查询)
    try {
      result = net(url, params, "GET");
      JSONObject object = JSONObject.fromObject(result);
      if(object.getInt("error_code")==0){
        System.out.println(object.get("result"));
      }else{
        System.out.println(object.get("error_code")+":"+object.get("reason"));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

没有什么技术难度,我直接贴源码地址:https://www.juhe.cn/docs/api/id/54

注意这里,分析返回结果:

/****失败示例**/
{
    "reason": "错误的短信模板ID,请通过后台确认!!!",
    "result": [],
    "error_code": 205402
}

/****成功示例**/
{
    "reason": "短信发送成功",
    "result": {
        "count": 1, /*发送数量*/
        "fee": 1, /*扣除条数*/
        "sid": "23d6bc4913614919a823271d820662af" /*短信ID*/
    },
    "error_code": 0 /*发送成功*/
}

其中返回的json结果中的error_code是返回码,为0则代表发送成功,其他值为发送失败,详情查看API:

短信接口的使用方式大致如此,有疑问的小伙伴可以在公众号后台留言。稍后我会将源码地址贴出,下一章我们讲如何用Java发邮件。

本文分享自微信公众号 - 浩Coding(gh_c4a2e63d2ca7)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券