private void onCompleted(object sender, PackEventArgs e) { SessionPack pack = sender as SessionPack; byte[] mResponseBuffer = pack.mResponseBuffer; if (e.isSuccess() && (mResponseBuffer != null)) { // // int num2 = Util.readInt(mResponseBuffer, ref offset); //Log.d("GetLoginQRCode", "mResponseBuffer" + Util.byteToHexStr(mResponseBuffer)); byte[] response = Util.ReadProtoRawData(mResponseBuffer, 1); uint Ret = Util.ReadProtoInt(response, 1); RetConst ret = (RetConst)Ret; int offset = 0; if (ret == RetConst.MM_OK) { response = Util.ReadProtoRawData(mResponseBuffer, 3); response = Util.ReadProtoRawData(response, 1); byte[] decryptedData = AES.Decrypt(Util.ReadProtoRawData(response, 2), pack.NotifyKey); //Log.d("NetSceneCheckLoginQRCode", " thread id " + Thread.CurrentThread.ManagedThreadId.ToString()); //Log.d("NetSceneCheckLoginQRCode", " decryptedData " + Util.byteToHexStr(decryptedData)); CheckQrcode qrcode = new CheckQrcode(); qrcode.Uuid = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 1)); qrcode.Status = Util.ReadProtoInt(decryptedData, 2); byte[] headUrl = Util.ReadProtoRawData(decryptedData, 5); if (headUrl != null) { qrcode.HeadImgUrl = Encoding.UTF8.GetString(headUrl); qrcode.Nickname = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 7)); } qrcode.ExpiredTime = Util.ReadProtoInt(decryptedData, 8); if (qrcode.Status == 2) { qrcode.Username = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 3)); qrcode.Password = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 4)); EventCenter.postEvent(EventConst.ON_LOGIN_CHECKQRCODE, qrcode, null); return; } EventCenter.postEvent(EventConst.ON_LOGIN_CHECKQRCODE, qrcode, null); Thread.Sleep(1500); new NetSceneCheckLoginQRCode().doScene(Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 1)), pack.NotifyKey); } } else { Log.e("NetSceneCheckLoginQRCode", "NetSceneCheckLoginQRCode failed. "); } }
private void onEventHandlerCheckLoginQrcode(EventWatcher watcher, BaseEventArgs evtArgs) { if (evtArgs != null) { if (evtArgs.mEventID == EventConst.ON_LOGIN_GETQRCODE) { GetLoginQrcode qrcode = evtArgs.mObject as GetLoginQrcode; if (qrcode.ImgBuf != null) { pB_ShowQrcode.BeginInvoke(new Action(() => pB_ShowQrcode.Image = Image.FromStream(new MemoryStream(qrcode.ImgBuf)))); new NetSceneCheckLoginQRCode().doScene(qrcode.Uuid, qrcode.NotifyKey); qrcode.ImgBuf = null; } } if (evtArgs.mEventID == EventConst.ON_LOGIN_CHECKQRCODE) { CheckQrcode qrcode = evtArgs.mObject as CheckQrcode; // Log.d("event", "event thread id " + Thread.CurrentThread.ManagedThreadId.ToString()); switch (qrcode.Status) { case 0: lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "未扫描 剩余时间" + qrcode.ExpiredTime.ToString() + "S")); break; case 1: lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "已扫描 未确认 剩余时间" + qrcode.ExpiredTime.ToString() + "S")); using (WebClient _client = new WebClient()) { pB_ShowQrcode.Image = Image.FromStream(new MemoryStream(_client.DownloadData(qrcode.HeadImgUrl))); } break; case 2: lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "已确认 " + qrcode.Nickname)); //ServiceCenter.sceneAuth.QrcodeLogin(qrcode.Username, qrcode.Password); EventCenter.removeEventWatcher(EventConst.ON_LOGIN_GETQRCODE, this.m_WatcherCheckLoginQrcode); EventCenter.removeEventWatcher(EventConst.ON_LOGIN_CHECKQRCODE, this.m_WatcherCheckLoginQrcode); new NetSceneNewAuth().doScene(qrcode.Username, qrcode.Password); if (Directory.Exists(Directory.GetCurrentDirectory() + "\\User\\" + qrcode.Username + "\\") == false) //如果不存在就创建file文件夹 { Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\User\\" + qrcode.Username); Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\User\\" + qrcode.Username + "\\" + ConstantsProtocol.ChatRoomPath); } break; case 4: lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "已取消扫描")); break; default: lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "debug Status" + qrcode.Status.ToString() + "S")); break; } } } }