有短信接口,平台在接收到短信回执和上行短信时,会主动的调用接口实现类的方法,现在遇到问题是: 当我发送一条短信出去,需要收信息人回复短信,如果在两分钟内回复,我就执行下一步,如果两分钟内没有回复,我需要在重新发送一条短信。我不知道怎么去实现如何判断是否在两分钟内回复短信,需要启线程吗?如何判断它是否在两分钟内回复,如果两分钟没有回复我执行下一步,如果两分钟没有回复我在发一次短信,如果两分钟过后,回复了,又进入另一步。请高手指点哈思路,如何去实施监控回复状态哦。谢谢了
public class ReceiveDemo extends ReceiveMsg{
/*获取下行短信返回状态和短信ID的方法*/
public void getAnswer(AnswerBean answerBean)
{
super.getAnswer(answerBean);
/*序列Id*/
String seqIdString = answerBean.getSeqId();
/*短信状态 ,0表示提交至API平台成功*/
int status = answerBean.getStatus();
/*下行短信ID,用来唯一标识一条下行短信*/
String msgId = answerBean.getMsgId();
//此处加入接收短信返回状态和短信ID的处理代码(即:将接收到的信息做入库处理)
}
/*接收上行短信的方法*/
public void getUpMsg(UpMsgBean upMsgBean) {
super.getUpMsg(upMsgBean);
String sequenceId = upMsgBean.getSequenceId();
/* 发送号码 */
String sendNum = upMsgBean.getSendNum();
/* 接收号码 */
String receiveNum = upMsgBean.getReceiveNum();
/* 上行短信到达时间 */
String msgRecTime = upMsgBean.getMsgRecTime();
/* 短信内容 */
String msgContent = upMsgBean.getMsgContent();
//此处加入接收上行短信的处理代码
}
}
public class ReceiveDemo extends ReceiveMsg{
/*获取下行短信返回状态和短信ID的方法*/
public void getAnswer(AnswerBean answerBean)
{
super.getAnswer(answerBean);
/*序列Id*/
String seqIdString = answerBean.getSeqId();
/*短信状态 ,0表示提交至API平台成功*/
int status = answerBean.getStatus();
/*下行短信ID,用来唯一标识一条下行短信*/
String msgId = answerBean.getMsgId();
//此处加入接收短信返回状态和短信ID的处理代码(即:将接收到的信息做入库处理)
}
/*接收上行短信的方法*/
public void getUpMsg(UpMsgBean upMsgBean) {
super.getUpMsg(upMsgBean);
String sequenceId = upMsgBean.getSequenceId();
/* 发送号码 */
String sendNum = upMsgBean.getSendNum();
/* 接收号码 */
String receiveNum = upMsgBean.getReceiveNum();
/* 上行短信到达时间 */
String msgRecTime = upMsgBean.getMsgRecTime();
/* 短信内容 */
String msgContent = upMsgBean.getMsgContent();
//此处加入接收上行短信的处理代码
}
}
发送短信有发送短信的方法:
/*初始化参数*/
client = client.initParameters("218.94.58.243", 9005, "userName", "passWord",receiveMsg);
try {
/*登录认证*/
boolean isLogin = client.anthenMsg(client);
if(isLogin)System.out.println("login sucess");
for(int i =0 ; i < 30;i++)
{
/*发送下行短信*/
client.sendMsg(client, 0, "13555555555", "test", 1);
}
//关闭发送短信与接收短信连接
client.closeConn();
} catch (Exception e1) {
e1.printStackTrace();
} 请问你这个定期轮询是什么意思?是实时去查库 查询所有状态为“已发送未回复”且“最后发送时间”>2分钟的信息,那不是频繁每时每刻去操作库哦
如果2分钟之内返回了短信通过map将线程停止,没有就执行线程里面写好的 , 应该可以吧
执行完了就把map里面这线程去掉,或者有其他什么标识;
然后装到一个全局变量Map里面去。
2.当这个用户回复你这个短信的时候,你就去Map里找到这个线程,通过标识,或者什么判定这线程是否执行完,执行了就说明已经过了2分钟了,没执行,就停止执行就行了撒,具体的需要你自己的逻辑去控制