有短信接口,平台在接收到短信回执和上行短信时,会主动的调用接口实现类的方法,现在遇到问题是: 当我发送一条短信出去,需要收信息人回复短信,如果在两分钟内回复,我就执行下一步,如果两分钟内没有回复,我需要在重新发送一条短信。我不知道怎么去实现如何判断是否在两分钟内回复短信,需要启线程吗?如何判断它是否在两分钟内回复,如果两分钟没有回复我执行下一步,如果两分钟没有回复我在发一次短信,如果两分钟过后,回复了,又进入另一步。请高手指点哈思路,如何去实施监控回复状态哦。谢谢了
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.   


    发送短信有发送短信的方法:
    /*初始化参数*/
            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.   

      将你发送过的短信 新开一个线程,然后睡眠2分钟,将这个线程装到一个map里面,
    如果2分钟之内返回了短信通过map将线程停止,没有就执行线程里面写好的 , 应该可以吧  
      

  3.   

    1.你在给客户发短信的时候就new一个线程出来,开启这个线程,这个线程需要睡眠2分钟,才执行代码,
    执行完了就把map里面这线程去掉,或者有其他什么标识;
    然后装到一个全局变量Map里面去。
    2.当这个用户回复你这个短信的时候,你就去Map里找到这个线程,通过标识,或者什么判定这线程是否执行完,执行了就说明已经过了2分钟了,没执行,就停止执行就行了撒,具体的需要你自己的逻辑去控制