有短信接口,平台在接收到短信回执和上行短信时,会主动的调用接口实现类的方法,现在遇到问题是: 当我发送一条短信出去,需要收信息人回复短信,如果在两分钟内回复,我就执行下一步,如果两分钟内没有回复,我需要在重新发送一条短信。我不知道怎么去实现如何判断是否在两分钟内回复短信,需要启线程吗?如何判断它是否在两分钟内回复,如果两分钟没有回复我执行下一步,如果两分钟没有回复我在发一次短信,如果两分钟过后,回复了,又进入另一步。请高手指点哈思路,如何去实施监控回复状态哦。谢谢了
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();
//此处加入接收上行短信的处理代码
}
}
这个需要用到 ,多线程,当然你也可以使用一个外加的小程序,不过我个人建议使用多线程,
我来谈谈两者的优缺点吧,
1、使用多线程:有点快捷方便,但是不利于二次开发;
2、使用外加程序,有利于二次开发;
你可以视情况而定。
为什么要做成这种模式啊。
分两个模块,发送短信模块,接受短信模块
发送一条短信,记录一下相关信息就可以了。关闭线程。
接受短信模块线程,接受到一条短信,根据之前记录的信息处理就可以了。
将你发送过的短信 新开一个线程,然后睡眠2分钟,将这个线程装到一个map里面,
如果2分钟之内返回了短信通过map将线程停止,没有就执行线程里面写好的 , 应该可以吧