/// <summary> /// 获取QQ信息 /// </summary> /// <param name="qqId">目标QQ</param> /// <param name="notCache">不使用缓存, 默认为"False",通常忽略本参数,仅在必要时使用</param> /// <returns>获取成功返回 <see cref="QQInfo"/>, 失败返回 null</returns> public QQInfo GetQQInfo(long qqId, bool notCache = true) { string result = CQP.CQ_getStrangerInfo(_authCode, qqId, notCache).ToString(Encoding.ASCII); if (string.IsNullOrEmpty(result)) { return(null); } using (BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result)))) { try { QQInfo qqInfo = new QQInfo(); qqInfo.Id = binary.ReadInt64_Ex(); qqInfo.Nick = binary.ReadString_Ex(_defaultEncoding); qqInfo.Sex = (Sex)binary.ReadInt32_Ex(); qqInfo.Age = binary.ReadInt32_Ex(); return(qqInfo); } catch { return(null); } } }
/// <summary> /// 获取陌生人信息 /// </summary> /// <param name="qqId">目标QQ</param> /// <param name="notCache">不使用缓存, 默认为 <code>false</code>, 通常忽略本参数, 仅在必要时使用</param> /// <exception cref="ArgumentOutOfRangeException">参数: qqId 超出范围</exception> /// <exception cref="InvalidDataException">获取信息时得到的数据流错误</exception> /// <returns>获取成功返回 <see cref="StrangerInfo"/>, 失败返回 <see langword="null"/></returns> public StrangerInfo GetStrangerInfo(long qqId, bool notCache = false) { if (qqId < QQ.MinValue) { throw new ArgumentOutOfRangeException("qqId"); } string data = CQP.CQ_getStrangerInfo(this.AppInfo.AuthCode, qqId, notCache).ToString(CQApi.DefaultEncoding); if (string.IsNullOrEmpty(data)) { #if DEBUG throw new InvalidDataException("获取的数据流格式无效"); #else return(null); #endif } try { return(new StrangerInfo(this, data)); } catch { #if DEBUG throw; #else return(null); #endif } }
/// <summary> /// 获取QQ信息 /// </summary> /// <param name="qqId">目标QQ</param> /// <param name="qqInfo">返回QQ信息, 若获取失败, 返回null</param> /// <param name="notCache">不使用缓存, 默认为"False",通常忽略本参数,仅在必要时使用</param> /// <returns></returns> public int GetQQInfo(long qqId, out QQ qqInfo, bool notCache = false) { string result = CQP.CQ_getStrangerInfo(_authCode, qqId, notCache); if (string.IsNullOrEmpty(result)) { qqInfo = null; return(-1000); } BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result))); qqInfo = new QQ(); qqInfo.Id = binary.ReadInt64_Ex(); qqInfo.Nick = binary.ReadString_Ex(_defaultEncoding); qqInfo.Sex = (Sex)binary.ReadInt32_Ex(); qqInfo.Age = binary.ReadInt32_Ex(); return(0); }
/// <summary> /// 获取QQ信息 /// </summary> /// <param name="qqId">目标QQ</param> /// <param name="qqInfo">返回QQ信息, 若获取失败, 返回null</param> /// <param name="notCache">不使用缓存, 默认为"False",通常忽略本参数,仅在必要时使用</param> /// <returns></returns> public int GetQQInfo(long qqId, out QQ qqInfo, bool notCache = false) { string result = CQP.CQ_getStrangerInfo(_authCode, qqId, notCache); if (string.IsNullOrEmpty(result)) { qqInfo = null; return(-1000); } UnPack unpack = new UnPack(Convert.FromBase64String(result)); qqInfo = new QQ(); qqInfo.Id = unpack.GetInt64(); qqInfo.Nick = unpack.GetString(Encoding.GetEncoding("GB18030")); qqInfo.Sex = (Sex)unpack.GetInt32(); qqInfo.Age = unpack.GetInt32(); return(0); }
/// <summary> /// 获取QQ信息 /// </summary> /// <param name="qqId">目标QQ</param> /// <param name="notCache">不使用缓存, 默认为"False",通常忽略本参数,仅在必要时使用</param> /// <returns>获取成功返回 <see cref="QQInfo"/>, 失败返回 null</returns> public QQInfo GetQQInfo(long qqId, bool notCache = false) { string result = CQP.CQ_getStrangerInfo(_authCode, qqId, notCache).ToString(Encoding.ASCII); if (string.IsNullOrEmpty(result)) { return null; } using (BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result)))) { QQInfo qqInfo = new QQInfo { Id = binary.ReadInt64_Ex(), Nick = binary.ReadString_Ex(_defaultEncoding), Sex = (Sex)binary.ReadInt32_Ex(), Age = binary.ReadInt32_Ex() }; return qqInfo; } }