?? recvlistener.java
字號(hào):
/*
* 創(chuàng)建日期 2005-12-14
*
* TODO 要更改此生成的文件的模板,請(qǐng)轉(zhuǎn)至
* 窗口 - 首選項(xiàng) - Java - 代碼樣式 - 代碼模板
*/
package test;
import java.math.BigInteger;
import com.wondertek.esmp.esms.empp.EMPPAnswer;
import com.wondertek.esmp.esms.empp.EMPPChangePassResp;
import com.wondertek.esmp.esms.empp.EMPPDeliver;
import com.wondertek.esmp.esms.empp.EMPPDeliverReport;
import com.wondertek.esmp.esms.empp.EMPPObject;
import com.wondertek.esmp.esms.empp.EMPPRecvListener;
import com.wondertek.esmp.esms.empp.EMPPReqNoticeResp;
import com.wondertek.esmp.esms.empp.EMPPSubmitSM;
import com.wondertek.esmp.esms.empp.EMPPSubmitSMResp;
import com.wondertek.esmp.esms.empp.EMPPSyncAddrBookResp;
import com.wondertek.esmp.esms.empp.EMPPTerminate;
import com.wondertek.esmp.esms.empp.EMPPUnAuthorization;
import com.wondertek.esmp.esms.empp.EmppApi;
/**
* @author chensheng
*
* TODO 要更改此生成的類(lèi)型注釋的模板,請(qǐng)轉(zhuǎn)至
* 窗口 - 首選項(xiàng) - Java - 代碼樣式 - 代碼模板
*/
public class RecvListener implements EMPPRecvListener {
private static final long RECONNECT_TIME = 10 * 1000;
private EmppApi emppApi = null;
private int closedCount = 0;
protected RecvListener(){
}
public RecvListener(EmppApi emppApi){
this.emppApi = emppApi;
}
// 處理接收到的消息
public void onMessage(EMPPObject message) {
if(message instanceof EMPPUnAuthorization){
EMPPUnAuthorization unAuth=(EMPPUnAuthorization)message;
System.out.println("客戶端無(wú)權(quán)執(zhí)行此操作 commandId="+unAuth.getUnAuthCommandId());
return;
}
if(message instanceof EMPPSubmitSMResp){
EMPPSubmitSMResp resp=(EMPPSubmitSMResp)message;
System.out.println("收到sumbitResp:");
byte[] msgId=fiterBinaryZero(resp.getMsgId());
System.out.println("msgId="+new BigInteger(msgId));
System.out.println("result="+resp.getResult());
return;
}
if(message instanceof EMPPDeliver){
EMPPDeliver deliver = (EMPPDeliver)message;
if(deliver.getRegister()==EMPPSubmitSM.EMPP_STATUSREPORT_TRUE){
//收到狀態(tài)報(bào)告
EMPPDeliverReport report=deliver.getDeliverReport();
System.out.println("收到狀態(tài)報(bào)告:");
byte[] msgId=fiterBinaryZero(report.getMsgId());
System.out.println("msgId="+new BigInteger(msgId));
System.out.println("status="+report.getStat());
}else{
//收到手機(jī)回復(fù)
System.out.println("收到"+deliver.getSrcTermId()+"發(fā)送的短信");
System.out.println("短信內(nèi)容為:"+deliver.getMsgContent());
}
return;
}
if(message instanceof EMPPSyncAddrBookResp){
EMPPSyncAddrBookResp resp=(EMPPSyncAddrBookResp)message;
if(resp.getResult()!=EMPPSyncAddrBookResp.RESULT_OK)
System.out.println("同步通訊錄失敗");
else{
System.out.println("收到服務(wù)器發(fā)送的通訊錄信息");
System.out.println("通訊錄類(lèi)型為:"+resp.getAddrBookType());
System.out.println(resp.getAddrBook());
}
}
if(message instanceof EMPPChangePassResp){
EMPPChangePassResp resp=(EMPPChangePassResp)message;
if(resp.getResult()==EMPPChangePassResp.RESULT_VALIDATE_ERROR)
System.out.println("更改密碼:驗(yàn)證失敗");
if(resp.getResult()==EMPPChangePassResp.RESULT_OK)
{
System.out.println("更改密碼成功,新密碼為:"+resp.getPassword());
emppApi.setPassword(resp.getPassword());
}
return;
}
if(message instanceof EMPPReqNoticeResp){
EMPPReqNoticeResp response=(EMPPReqNoticeResp)message;
if(response.getResult()!=EMPPReqNoticeResp.RESULT_OK)
System.out.println("查詢運(yùn)營(yíng)商發(fā)布信息失敗");
else{
System.out.println("收到運(yùn)營(yíng)商發(fā)布的信息");
System.out.println(response.getNotice());
}
return;
}
if(message instanceof EMPPAnswer){
System.out.println("收到企業(yè)疑問(wèn)解答");
EMPPAnswer answer=(EMPPAnswer)message;
System.out.println(answer.getAnswer());
}
System.out.println(message);
}
//處理連接斷掉事件
public void OnClosed(Object object) {
// 該連接是被服務(wù)器主動(dòng)斷掉,不需要重連
if(object instanceof EMPPTerminate){
System.out.println("收到服務(wù)器發(fā)送的Terminate消息,連接終止");
return;
}
//這里注意要將emppApi做為參數(shù)傳入構(gòu)造函數(shù)
RecvListener listener = new RecvListener(emppApi)
;
System.out.println("連接斷掉次數(shù):"+(++closedCount));
for(int i = 1;!emppApi.isConnected();i++){
try {
System.out.println("重連次數(shù):"+i);
Thread.sleep(RECONNECT_TIME);
emppApi.reConnect(listener);
}catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("重連成功");
}
//處理錯(cuò)誤事件
public void OnError(Exception e) {
e.printStackTrace();
}
private static byte[] fiterBinaryZero(byte[] bytes) {
byte[] returnBytes = new byte[8];
for (int i = 0; i < 8; i++) {
returnBytes[i] = bytes[i];
}
return returnBytes;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -