/// <summary>
        /// 批量获取联系人详细信息
        /// </summary>
        /// <param name="requestContacts"></param>
        /// <param name="pass_ticket"></param>
        /// <param name="uin"></param>
        /// <param name="sid"></param>
        /// <param name="skey"></param>
        /// <param name="deviceID"></param>
        public void BatchGetContact(string[] requestContacts, string pass_ticket, BaseRequest baseReq, Action <BatchGetContactResponse> CallBack)
        {
            BatchGetContactRequest req = new BatchGetContactRequest
            {
                BaseRequest = baseReq,
                Count       = requestContacts.Length
            };

            List <BatchUser> requestUsers = new List <BatchUser>();

            for (int i = 0; i < req.Count; i++)
            {
                var tmp = new BatchUser
                {
                    UserName = requestContacts[i],
                };
                requestUsers.Add(tmp);
            }

            req.List = requestUsers.ToArray();
            string requestJson = JsonConvert.SerializeObject(req);

            string url = "https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r={0}&lang=zh_CN&pass_ticket={1}";

            url = string.Format(url, GetR(), pass_ticket);
            http.Item.Request.HeadersDic["Accept"] = "application/json, text/plain, */*";
            http.GetHtml(url, "post", requestJson, referer: "https://wx2.qq.com/", callBack: (x) =>
            {
                string repJsonStr = x.response.DataString();
                var rep           = JsonConvert.DeserializeObject <BatchGetContactResponse>(repJsonStr);
                CallBack?.Invoke(rep);
            });
        }
Exemple #2
0
        /// <summary>
        /// 批量获取联系人详细信息
        /// </summary>
        /// <param name="requestContacts"></param>
        /// <param name="pass_ticket"></param>
        /// <param name="uin"></param>
        /// <param name="sid"></param>
        /// <param name="skey"></param>
        /// <param name="deviceID"></param>
        /// <returns></returns>
        public BatchGetContactResponse BatchGetContact(string[] requestContacts, string pass_ticket, BaseRequest baseReq)
        {
            string url = "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r={0}&lang=zh_CN&pass_ticket={1}";

            url = string.Format(url, getTimestamp(DateTime.Now), pass_ticket);

            BatchGetContactRequest req = new BatchGetContactRequest();

            req.BaseRequest = baseReq;
            req.Count       = requestContacts.Length;

            List <BatchUser> requestUsers = new List <BatchUser>();

            for (int i = 0; i < req.Count; i++)
            {
                var tmp = new BatchUser();
                tmp.UserName = requestContacts[i];
                requestUsers.Add(tmp);
            }

            req.List = requestUsers.ToArray();
            string requestJson = JsonConvert.SerializeObject(req);
            string repJsonStr  = http.POST_UTF8String(url, requestJson);
            var    rep         = JsonConvert.DeserializeObject <BatchGetContactResponse>(repJsonStr);

            return(rep);
        }
Exemple #3
0
        /// <summary>
        /// 批量获取联系人详细信息
        /// </summary>
        /// <param name="requestContacts"></param>
        /// <param name="pass_ticket"></param>
        /// <param name="uin"></param>
        /// <param name="sid"></param>
        /// <param name="skey"></param>
        /// <param name="deviceID"></param>
        /// <returns></returns>
        public BatchGetContactResponse BatchGetContact(string[] requestContacts, string pass_ticket, BaseRequest baseReq)
        {
            SetHttpHeader("Accept", "application/json, text/plain, */*");
            SetHttpHeader("Connection", "keep-alive");
            SetHttpHeader("Accept-Encoding", "gzip, deflate, br");
            string url = this.root_uri + "/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r={0}&lang=zh_CN&pass_ticket={1}";

            url = string.Format(url, getR(), pass_ticket);

            BatchGetContactRequest req = new BatchGetContactRequest();

            req.BaseRequest = baseReq;
            req.Count       = requestContacts.Length;

            List <BatchUser> requestUsers = new List <BatchUser>();

            for (int i = 0; i < req.Count; i++)
            {
                var tmp = new BatchUser();
                tmp.UserName = requestContacts[i];
                requestUsers.Add(tmp);
            }

            req.List = requestUsers.ToArray();
            string requestJson = JsonConvert.SerializeObject(req);
            string repJsonStr  = PostString(url, requestJson);
            var    rep         = JsonConvert.DeserializeObject <BatchGetContactResponse>(repJsonStr);

            if (rep == null)
            {
                return(null);
            }
            return(rep);
        }
Exemple #4
0
        /// <summary>
        /// 获取联系人信息,例如初始化、群聊里面。
        /// </summary>
        /// <param name="statusNotifyUserName">需要获取的UserName列表,包括群,个人用户,用英文,分割</param>
        /// <param name="EncryChatRoomId">默认为空,如果是获取群内成员详细信息,则填写encryChatRoomId,也就是群的UserName</param>
        public void GetBatchGetContactAsync(string statusNotifyUserName, string encryChatRoomId = "")
        {
            Task.Factory.StartNew(() =>
            {
                try
                {
                    //获取历史会话列表
                    string webwxbatchgetcontactUrl = string.Format(host + "/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r={0}", Utils.GetJavaTimeStamp());
                    string[] chatNameArr           = statusNotifyUserName.Split(',');
                    bool finishGetChatList         = false;
                    BatchGetContactRequest batchGetContactRequest = new BatchGetContactRequest();
                    batchGetContactRequest.BaseRequest            = baseRequest;
                    int count = chatNameArr.Length;
                    int index = 0;
                    //一批次最多获取50条,多出来分批获取
                    while (!finishGetChatList)
                    {
                        batchGetContactRequest.List = new List <ChatRoom>();
                        if (((index + 1) * 50) < count)
                        {
                            for (int i = index * 50; i < (index + 1) * 50; i++)
                            {
                                batchGetContactRequest.List.Add(new ChatRoom {
                                    UserName = chatNameArr[i], EncryChatRoomId = encryChatRoomId
                                });
                            }
                        }
                        else
                        {
                            for (int i = index * 50; i < count; i++)
                            {
                                batchGetContactRequest.List.Add(new ChatRoom {
                                    UserName = chatNameArr[i], EncryChatRoomId = encryChatRoomId
                                });
                            }
                            finishGetChatList = true;
                        }
                        BatchGetContactResponse batchGetContactMsg = httpClient.PostJson <BatchGetContactResponse>(webwxbatchgetcontactUrl, batchGetContactRequest);
                        asyncOperation.Post(
                            new SendOrPostCallback((list) =>
                        {
                            BatchGetContactComplete?.Invoke(this, new TEventArgs <List <Contact> >((List <Contact>)list));
                        }), batchGetContactMsg.ContactList);

                        index++;
                    }
                }
                catch (Exception e)
                {
                    asyncOperation.Post(
                        new SendOrPostCallback((obj) =>
                    {
                        ExceptionCatched?.Invoke(this, new TEventArgs <Exception>((Exception)obj));
                    }), e);
                }
            });
        }