public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { /* * { * "result": [ * { * "client_type": 1, * "status": "online", * "uin": 3017767504 * } * ], * "retcode": 0 * } */ var json = response.ResponseString.ToJToken(); if (json["retcode"].ToString() == "0") { var result = json["result"].ToObject <FriendOnlineInfo[]>(); foreach (var info in result) { Store.FriendDic.GetAndDo(info.Uin, friend => Mapper.Map(info, friend)); } return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { /* * { * "BaseResponse": { * "Ret": 0, * "ErrMsg": "" * }, * "MsgID": "5895072760632094896" * } */ var str = responseItem.ResponseString; if (!str.IsNullOrEmpty()) { var json = JObject.Parse(str); if (json["BaseResponse"]["Ret"].ToString() == "0") { return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new WeChatException(WeChatErrorCode.ResponseError, json["BaseResponse"]["ErrMsg"].ToString()); } } throw WeChatException.CreateException(WeChatErrorCode.ResponseError); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { var str = responseItem.ResponseString; var match = _regCode.Match(str); if (match.Success) { var code = match.Groups[1].Value; var result = EnumHelper.ParseFromStrNum <WatiForLoginResult>(code); switch (result) { case WatiForLoginResult.Success: { var m = _regUrl.Match(str); if (m.Success) { Session.LoginUrl = $"{m.Groups[1].Value}&fun=new&version=v2"; Session.BaseUrl = Session.LoginUrl.Substring(0, Session.LoginUrl.LastIndexOf("/", StringComparison.OrdinalIgnoreCase)); } break; } case WatiForLoginResult.ScanCode: _tip = 0; break; case WatiForLoginResult.QRCodeInvalid: break; } return(NotifyActionEventAsync(ActionEventType.EvtOK, result)); } throw WeChatException.CreateException(WeChatErrorCode.ResponseError); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { /* * { * "retcode": 0, * "result": { * "dnamelist": [ * { * "name": "月光双刀、Test、月光借口、月光双", * "did": 522140442 * } * ] * } * } */ var json = response.ResponseString.ToJToken(); if (json["retcode"].ToString() == "0") { var result = json["result"]; var list = result["dnamelist"].ToObject <List <QQDiscussion> >(); list.ForEach(Store.AddDiscussion); return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { /* * <error> * <ret>0</ret> * <message/> * <skey>@crypt_c498484a_beffad67aa727e24f7c669c51d5c895f</skey> * <wxsid>Lr2AUrW1+FSCmtHZ</wxsid> * <wxuin>463678295</wxuin> * <pass_ticket>SSR%2BWEx6yJf8MTN2G2XjsWtRpXWQ0J6wBHc5BeHGL3gATmsW%2FMiFX0GBqWrmm7dN</pass_ticket> * <isgrayscale>1</isgrayscale> * </error> */ var str = responseItem.ResponseString; var root = XDocument.Parse(str).Root; Session.Skey = root.Element("skey").Value; Session.Sid = root.Element("wxsid").Value; Session.Uin = root.Element("wxuin").Value; Session.PassTicket = root.Element("pass_ticket").Value; Session.State = SessionState.Online; return(NotifyActionEventAsync(ActionEventType.EvtOK)); }
private static void ReadHeader(HttpResponseMessage response, HttpResponseItem responseItem) { foreach (var header in response.Headers) { responseItem.Headers[header.Key] = header.Value.ToList(); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var ptwebqq = HttpService.GetCookie("ptwebqq", Session.CheckSigUrl).Value; Session.Ptwebqq = ptwebqq; return(NotifyActionEventAsync(ActionEventType.EvtOK)); }
public override bool AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest request) { bool flag = false; string uid = request.QueryString.Get("uid"); string token = request.QueryString.Get("token"); if (string.IsNullOrWhiteSpace(uid)) { return(flag); } //token 验证 if (!string.IsNullOrWhiteSpace(token) && Tool.MD5Check(uid, token)) { flag = true; } else { //接口验证 HttpRequestItem req = new HttpRequestItem() { URL = Constant.AuthenUrl, Postdata = string.Format("uid={0}", uid) }; string resData = HttpHelp.SendHttpRequest(req); if (!string.IsNullOrWhiteSpace(resData)) { HttpResponseItem res = JsonUtil <HttpResponseItem> .Deserialize(resData); flag = res.AckCode == ResultAckCodeEnum.Success && res.ResultCode == 1; } } return(flag ? base.AuthorizeHubConnection(hubDescriptor, request) : false); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var rex = new Regex(QQConstants.REGXP_LOGIN); var str = response.ResponseString; var m = rex.Match(str); if (m.Success) { var ret = m.Groups[1].Value; switch (ret) { //case "0": NotifyActionEvent(QQActionEventType.EVT_OK, m.Groups[3].Value); break; //case "66": throw new QQException(QQErrorCode.QRCODE_OK, m.Groups[5].Value); //case "67": throw new QQException(QQErrorCode.QRCODE_AUTH, m.Groups[5].Value); case "0": return(NotifyActionEventAsync(ActionEventType.EvtOK, new CheckQRCodeArgs(QRCodeStatus.OK, m.Groups[3].Value))); case "66": return(NotifyActionEventAsync(ActionEventType.EvtOK, new CheckQRCodeArgs(QRCodeStatus.Valid, m.Groups[5].Value))); case "67": return(NotifyActionEventAsync(ActionEventType.EvtOK, new CheckQRCodeArgs(QRCodeStatus.Auth, m.Groups[5].Value))); case "65": return(NotifyActionEventAsync(ActionEventType.EvtOK, new CheckQRCodeArgs(QRCodeStatus.Invalid, m.Groups[5].Value))); } } return(NotifyErrorEventAsync(QQErrorCode.ResponseError)); }
public virtual async Task <HttpResponseItem> ExecuteHttpRequestAsync(HttpRequestItem requestItem, CancellationToken token) { token.ThrowIfCancellationRequested(); var responseItem = new HttpResponseItem { RequestItem = requestItem }; var httpRequest = GetHttpRequest(requestItem); HttpResponseMessage response = null; try { response = await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false); while (response.StatusCode == HttpStatusCode.Redirect && response.Headers.Location != null) { response = await _httpClient.GetAsync(response.Headers.Location, token).ConfigureAwait(false); } response.EnsureSuccessStatusCode(); ReadHeader(response, responseItem); await ReadContentAsync(response, responseItem).ConfigureAwait(false); return(responseItem); } finally { response?.Dispose(); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var ptwebqq = HttpService.GetCookie("ptwebqq", Session.CheckSigUrl); ptwebqq.Expired = true; //Session.Ptwebqq = ptwebqq; return(NotifyOkEventAsync()); }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJToken(); var retcode = json["retcode"]?.ToString(); return(retcode.IsNull() ? NotifyOkEventAsync() : NotifyErrorAsync(response.ResponseString)); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJToken(); var retcode = json["retcode"].ToInt(); switch (retcode) { case 0: return(HandlePollMsg(json["result"])); } throw new QQException(QQErrorCode.ResponseError, response.ResponseString); }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { var str = responseItem.ResponseString; var match = _reg.Match(str); if (match.Success && match.Groups.Count > 2 && match.Groups[1].Value == "200") { Session.Uuid = match.Groups[2].Value; return(NotifyOkEventAsync()); } return(NotifyErrorEventAsync(WeChatErrorCode.ResponseError)); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJsonObj(); if (json["retcode"].ToString() == "0") { return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJToken(); if (json["BaseResponse"]["Ret"].ToString() == "0") { return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new WeChatException(WeChatErrorCode.ResponseError, response.ResponseString); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJToken(); if (json["retcode"].ToString() == "0") { HandleResult(json); return(NotifyOkEventAsync()); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { /* * { * retcode: 0, * result: { * birthday: { * month: 11, * year: 1990, * day: 14 * }, * face: 252, * phone: "83544376", * occupation: "计算机/互联网/IT", * allow: 1, * college: "北京师大附中", * uin: 89009143, * blood: 2, * constel: 12, * lnick: "努力去香港", * vfwebqq: "7454728c49b49db8eba34dad1df1704bffab25ce52f037516fed029e05a681473d01af3d85172a96", * homepage: "http://tieba.baidu.com/f?kw=%C0%EE%BE%AD", * vip_info: 7, * city: "西城", * country: "中国", * personal: "", * shengxiao: 7, * nick: "月光双刀", * email: "*****@*****.**", * province: "北京", * account: 89009143, * gender: "male", * mobile: "152********" * } * } */ var json = response.ResponseString.ToJToken(); if (json["retcode"].ToString() == "0") { var info = json["result"].ToObject <SelfInfo>(); info.MapTo(Session.User); return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJToken(); if (json["retcode"].ToString() == "0") { var ret = json["result"]; Session.Vfwebqq = ret["vfwebqq"].ToString(); return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJToken(); var retcode = json["retcode"].ToInt(); switch (retcode) { case 0: return(HandlePollMsg(json["result"])); case 102: // 接连正常,没有消息到达 {"retcode":102,"errmsg":""} // 继续进行下一个消息请求 return(NotifyOkEventAsync()); case 110: case 109: { // 客户端主动退出 var msg = $"**** 客户端主动退出 retcode: {retcode} ****"; Logger.LogWarning(msg); Session.State = SessionState.Offline; return(NotifyOkEventAsync(QQNotifyEvent.CreateEvent(QQNotifyEventType.NetError, msg))); } case 121: case 120: case 100: { // 客户端主动退出 var msg = $"**** 服务器需求重新认证 retcode: {retcode} ****"; Logger.LogWarning(msg); Session.State = SessionState.Offline; return(NotifyOkEventAsync(QQNotifyEvent.CreateEvent(QQNotifyEventType.NetError, msg))); } case 103: // 此时需要登录Smart QQ,确认能收到消息后点击设置-退出登录,就会恢复正常了 { // 客户端主动退出 var msg = $"**** 需要登录Smart QQ retcode: {retcode} ****"; Logger.LogWarning(msg); // Session.State = SessionState.Offline; // return NotifyOkEventAsync(QQNotifyEvent.CreateEvent(QQNotifyEventType.NetError, msg)); return(NotifyOkEventAsync()); } } throw new QQException(QQErrorCode.ResponseError, response.ResponseString); }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { var str = responseItem.ResponseString; var match = _reg.Match(str); if (match.Success) { var retcode = match.Groups[1].Value; if (Session.SyncUrl == null) { // retcode // 1100- // 1101-参数错误 // 1102-cookie错误 if (retcode != "0") { return(TestNextHost()); } else { Session.SyncUrl = responseItem.RequestItem.RawUrl; return(this.ExecuteAsync()); } } switch (retcode) { case "1100": case "1101": // 在手机上登出了微信 Session.State = SessionState.Offline; return(NotifyOkEventAsync(EnumHelper.ParseFromStrNum <SyncCheckResult>(retcode))); case "0": var selector = match.Groups[2].Value; return(NotifyOkEventAsync(EnumHelper.ParseFromStrNum <SyncCheckResult>(selector, s => { Logger.LogWarning($"cannot convert {s} to enum type : {nameof(SyncCheckResult)}"); return SyncCheckResult.Nothing; }))); } } throw WeChatException.CreateException(WeChatErrorCode.ResponseError); }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var str = response.ResponseString; var json = JObject.Parse(str); if (json["BaseResponse"]["Ret"].ToString() == "0") { Session.SyncKey = json["SyncCheckKey"]; var list = json["AddMsgList"].ToObject <List <Message> >(); var newMsgs = list.Where(m => m.MsgType != MessageType.GetContact).ToList(); newMsgs.ForEach(m => { m.FromUser = Store.ContactMemberDic.GetOrDefault(m.FromUserName); }); return(NotifyActionEventAsync(ActionEventType.EvtOK, newMsgs)); } throw WeChatException.CreateException(WeChatErrorCode.ResponseError); }
public virtual async Task <HttpResponseItem> ExecuteHttpRequestAsync(HttpRequestItem requestItem, CancellationToken token) { token.ThrowIfCancellationRequested(); var responseItem = new HttpResponseItem { RequestItem = requestItem }; var httpRequest = GetHttpRequest(requestItem); using (var response = await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false)) { response.EnsureSuccessStatusCode(); responseItem.StatusCode = response.StatusCode; ReadHeader(response, responseItem); await ReadContentAsync(response, responseItem).ConfigureAwait(false); return(responseItem); } }
public HttpResponseItem AuthenUser() { string uid = HttpContext.Current.Request["uid"]; HttpResponseItem ret = new HttpResponseItem() { AckCode = ResultAckCodeEnum.Success }; if (ConvertUtil.ConvertStringToInt32(uid, 0) % 2 == 0) { ret.ResultCode = 1; } else { ret.ResultCode = 0; ret.ResultMsg = "user offline-status"; } return(ret); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var json = response.ResponseString.ToJsonObj(); if (json["retcode"].ToString() == "0") { var ret = json["result"].ToJsonObj(); Account.User.Uin = ret["uin"].ToObject <long>(); Account.User.QQ = ret["uin"].ToObject <long>(); Session.SessionId = ret["psessionid"].ToString(); Account.User.Status = ret["status"].ToString().ToEnum(QQStatusType.Online); Session.State = SessionState.Online; Session.Index = ret["index"].ToInt(); Session.Port = ret["port"].ToInt(); return(NotifyActionEventAsync(ActionEventType.EvtOK)); } else { throw new QQException(QQErrorCode.ResponseError, response.ResponseString); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem response) { var str = response.ResponseString; var m = _reg.Match(str); if (m.Success) { var ret = m.Groups[1].Value; switch (ret) { case "0": return(NotifyOkEventAsync(new CheckQRCodeArgs(QRCodeStatus.Ok, m.Groups[3].Value))); case "66": return(NotifyOkEventAsync(new CheckQRCodeArgs(QRCodeStatus.Valid, m.Groups[5].Value))); case "67": return(NotifyOkEventAsync(new CheckQRCodeArgs(QRCodeStatus.Auth, m.Groups[5].Value))); case "65": return(NotifyOkEventAsync(new CheckQRCodeArgs(QRCodeStatus.Invalid, m.Groups[5].Value))); } } return(NotifyErrorEventAsync(QQErrorCode.ResponseError)); }
public override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { var str = responseItem.ResponseString; var match = _reg.Match(str); if (match.Success) { var retcode = match.Groups[1].Value; if (Session.SyncUrl == null) { // retcode // 1100- // 1101-参数错误 // 1102-cookie错误 if (retcode != "0") { return(TestNextHost()); } else { Session.SyncUrl = responseItem.RequestItem.RawUrl; return(this.ExecuteAsync()); } } switch (retcode) { case "1100": case "1101": // 在手机上登出了微信 Session.State = SessionState.Offline; return(NotifyActionEventAsync(ActionEventType.EvtOK, EnumHelper.ParseFromStrNum <SyncCheckResult>(retcode))); case "0": var selector = match.Groups[2].Value; return(NotifyActionEventAsync(ActionEventType.EvtOK, EnumHelper.ParseFromStrNum <SyncCheckResult>(selector))); } } throw WeChatException.CreateException(WeChatErrorCode.ResponseError); }
private static async Task ReadContentAsync(HttpResponseMessage response, HttpResponseItem responseItem) { switch (responseItem.RequestItem.ResultType) { case HttpResultType.String: responseItem.ResponseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false); break; case HttpResultType.Byte: responseItem.ResponseBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); break; case HttpResultType.Stream: responseItem.ResponseStream = new MemoryStream(await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false)); break; } foreach (var header in response.Content.Headers) { responseItem.Headers[header.Key] = header.Value.ToList(); } }
protected override Task <ActionEvent> HandleResponse(HttpResponseItem responseItem) { var str = responseItem.ResponseString; if (!str.IsNullOrEmpty()) { var json = JObject.Parse(str); if (json["BaseResponse"]["Ret"].ToString() == "0") { var list = json["ContactList"].ToObject <List <ContactMember> >(); foreach (var item in list) { Store.ContactMemberDic[item.UserName] = item; } return(NotifyOkEventAsync()); } else { throw new WeChatException(WeChatErrorCode.ResponseError, json["BaseResponse"]["ErrMsg"].ToString()); } } throw WeChatException.CreateException(WeChatErrorCode.ResponseError); }
private void ResponseProcess(string result) { try { if (!string.IsNullOrWhiteSpace(result)) { HttpResponseItem response = Newtonsoft.Json.JsonConvert.DeserializeObject <HttpResponseItem>(result); if (response != null) { switch (response.AckCode) { case ResultAckCodeEnum.Success: LogUtility.Info("job执行结果: 成功"); break; case ResultAckCodeEnum.Waring: LogUtility.Warn("job执行结果: 警告; 警告信息:" + response.ResultMsg); break; case ResultAckCodeEnum.Exception: case ResultAckCodeEnum.Error: LogUtility.Error("job执行结果: 失败; 失败信息:" + response.ResultMsg); break; } } } else { LogUtility.Warn("返回结果为空"); } } catch (System.Exception ex) { LogUtility.Error(string.Format("job执行异常, 异常信息: {0}", ex.Message)); } }