采用API方式发送,接收短信(嘉信)

API方式:

首选要在jx01移动代理服务器中进行如下配置

系统管理-->接口管理-->短信接口模块增加如下配置信息

接口编码: 
接口名称: 
接口类型:DB接口 API接口   WEB SERVICE接口   SOCKET接口  
通信能力:短信 WAP  
业务类型:CRM应用 SCM应用 ERP应用 OA应用 EMAIL应用 行业应用 其它应用
业务代码:IMMF
短信子码:22 23 24
手机指令: 
短号支持:启用   关闭
回执要求:支持回执   不支持回执
登录用户: 
登录密码: 
接口状态:运行状态   调试状态   暂停(失效)状态
失效日期: (不设置表示永久生效)

其中,接口编码,必须唯一系统内部识别码;接口名称:用于开发人员识别项目;短信子码:会加上特服号作为号码发送到用户手机上;登录用户:对于API开发中会用到;登录密码:同上API开发中会用到;接口状态:运行就是正常运行时使用,调试状态用于开发模式.

附:其他模块

系统管理-->话单管理:可以查看所有接收与发送的短信

系统管理-->通讯设置:可以查看到 SP特服号,短信网关IP,登录短信网关帐号等信息

系统管理-->设备配置管理(网管参数,设备信息,业务能力查看-确定是否开启相关的服务在配置中有用.

统计报表-->接口业务统计,可以分析发送短信的总数

 

源码分析:

 private String mobileStr = "13500000000";//手机号可用逗号分开
 private String content = "短信发送测试内容 via  IM JAVA API ";//测试的短信内容
 private long smId = 1;            //手机显示来电的尾号
 private int smType = 0;           //0:默认为短信,1:wap方式等
 private String url = "wap.myself.com";//"wap.sohu.com";      wap方式用到的网址
 private String host = "127.0.0.1";//嘉信信息机的ip
 private String dbName = "mas";        //数据库名称
 //正式
 private String apiId = "接口编码";         //信息机中定义的API接口,关键字
 private String name = "登录用户";        //信息机中API接口的用户名
 private String pwd = "登录密码";          //信息机中API接口的密码

 private APIClient handler = new APIClient();//客调用嘉信api处理类

 //线程是否启用的标识
 private boolean flag=true;
 

 // 基本参数设置
 private void ProBaseConf() {
  System.out.println("初始化连接信息");
  log.debug("初始化连接信息/n");
  // 连接配置信息
  int connectRe = handler.init(host, name, pwd, apiId, dbName);
  if (connectRe == APIClient.IMAPI_SUCC)
  {
   System.out.println("初始化成功");
   log.debug("初始化成功/n");
  }
  else if (connectRe == APIClient.IMAPI_CONN_ERR)
   log.debug("连接失败/n");
  else if (connectRe == APIClient.IMAPI_API_ERR)
   log.debug("apiID不存在/n");
 }

 

 //2009-12-24整型值的判断处理
 public int getInt(String str) {
  int ret = Integer.MIN_VALUE;
  try {
   ret = Integer.parseInt(str);
  } catch (NumberFormatException e) {
   ret = Integer.MIN_VALUE;
  }
  return ret;
 }

 

//短信发送方法

//SmsBean短信类,包括手机号,内容,序号

 public int SendMessage(SmsBean sms) {
  int resultcol = 0;
  // 当短信收发接口为空时重新初始化
  if (handler == null) {
   System.out.println("handler==null");
   ProBaseConf();
   System.out.println("handler信息:" + handler.toString());
  }

  // 发送号码,数组
  ArrayList telList = sms.getMobileNoList();
  String[] dest_Terminal_Id = new String[telList.size()];
  for (int i = 0; i < telList.size(); i++) {
   dest_Terminal_Id[i] = telList.get(i).toString();
  }

  //组装源手机号,即:短信接入号+业务号
  String tmpSrcID = null;
  if (sms.getSn().length() == 6) {
   //组装成6位,1位命令字+5位自动增加的.
   tmpSrcID = sms.getSn();//组装原发送号
  }
  if (tmpSrcID == null || tmpSrcID.trim().length() == 0
    || getInt(tmpSrcID.trim()) == Integer.MIN_VALUE) {
   tmpSrcID = "" + smId;
   //tmpSrcID = "";
  }
  //短信内容
  String tmpContent = sms.getSmsContent();
  //日志提示
  System.out.println("短信发送,手机号:"+dest_Terminal_Id.toString()+"短信尾号Long:"+Long.parseLong(tmpSrcID)+"内容:"+tmpContent);
  log.debug("短信发送,手机号:"+dest_Terminal_Id.toString()+"短信尾号Long:"+Long.parseLong(tmpSrcID)+"内容:"+tmpContent+"/n");
  //发送短信,非push wap方式
  int result = handler.sendSM(dest_Terminal_Id, tmpContent, smId, Long
    .parseLong(tmpSrcID));

  if (result == APIClient.IMAPI_SUCC) {
   System.out.println("发送成功");
   log.debug("发送成功/n");
   resultcol = 1;
  } else if (result == APIClient.IMAPI_INIT_ERR)
   log.debug("未初始化");
  else if (result == APIClient.IMAPI_CONN_ERR)
   log.debug("数据库连接失败");
  else if (result == APIClient.IMAPI_DATA_ERR)
   log.debug("参数错误");
  else if (result == APIClient.IMAPI_DATA_TOOLONG)
   log.debug("消息内容太长");
  else if (result == APIClient.IMAPI_INS_ERR)
   log.debug("数据库插入错误");
  else
   log.debug("出现其他错误");
  return resultcol;
 }

 

 

 //短信接收线程
 class RecTask extends Thread
 {
  long interval = 10000L;//时间间隔,每隔10秒钟
  public RecTask()
  {
  }
  public void run()
  {
   while(flag)
   {
    try
    {
     //关闭线程
     flag=false;
     //接收短信
     recvSM();
     //每隔
     Thread.sleep(interval);
     //启动线程
     flag=true;
    }catch(InterruptedException e)
    {
     System.out.println("线程异常"+e.toString());
    }  
   }
  }
 }
 
 /**
  * 接收短信
  */
 public void recvSM() {
  // 当短信收发接口为空时重新初始化
  if (handler == null) {
   System.out.println("handler==null");
   ProBaseConf();
   System.out.println("handler信息:" + handler.toString());
  }
  
  MOItem[] mos = handler.receiveSM();
  if (mos == null) {
   log.debug("未初始化或接收失败/n");
   return;
  } else if (mos.length != 0) {
   try{
    RecPro(mos);//对于接收的短信进行处理
   }catch(Exception e)
   {
    log.debug("处理接收短信异常:"+e.toString());
   }
  }
 }

 

 

//构造函数

public ClassName(){

  ProBaseConf();
  //启动接收短信线程
  RecTask rt=new RecTask();
  rt.start();

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值