Example #1
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 = 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);
                }
            }
        }
Example #2
0
        /// <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
            }
        }
Example #3
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);
            }
            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);
        }
Example #4
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);
        }
Example #5
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;
     }
 }