示例#1
0
        public MsgSendResult SendTextMsg(string fakeid, string msg)
        {
            PreLogin();

            //refer是必须的,否则错误: need post
            var refer =
                string.Format(
                    "https://mp.weixin.qq.com/cgi-bin/singlemsgpage?fromfakeid={0}&count=20&t=wxm-singlechat&token={1}&lang=zh_CN",
                    fakeid, _token);
            var dic = new Dictionary <string, object>
            {
                { "type", TextMsg },
                { "content", msg },
                { "error", "false" },
                { "imgcode", "" },
                { "tofakeid", fakeid },
                { "token", _token },
                { "ajax", 1 },

                /*{"fid", 10000003},//后3个文本消息不需要
                 * {"fileid", 10000000},
                 * {"appmsgid", 10000003}*/
            };
            var r = HttpExtendedHelper.Post <MsgSendResult>(DefaultSendMsg, dic, _cc, refer)
                    ?? new MsgSendResult()
            {
                ret = -9999, msg = "未收到微信服务器响应"
            };

            return(r);
        }
示例#2
0
        public LoginRet Login()
        {
            //用于登录要发送的数据
            var dic = new Dictionary <string, object>
            {
                { "username", _userName },
                { "pwd", Md5(_pwd) },
                { "imgcode", string.Empty },
                { "f", "json" }
            };
            var ret = HttpExtendedHelper.Post <LoginRet>(DefaultLoginUrl, dic, _cc, DefaultLoginReferUrl)
                      ?? new LoginRet()
            {
                ErrCode = -9999, ErrMsg = "超时而未收到任何服务器响应"
            };

            if (ret.IsSuccess)
            {
                _token = Regex.Match(ret.ErrMsg, @"(?<=token=)\d+").Value;
            }
            else
            {
                ret.ErrMsg = MapErrCode(ret.ErrCode);
            }
            return(ret);
        }
示例#3
0
        public WxUserInfoFree ExecuteUserInfo(string fakeid)
        {
            PreLogin();

            var dic = new Dictionary <string, object>
            {
                { "token", _token },
                { "lang", Language },
                { "t", "ajax-getcontactinfo" },
                { "fakeid", fakeid }
            };
            //X-Requested-With:XMLHttpRequest
            var refer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?";
            var p     = "t=user/index&pagesize=10&pageidx=0&type=0&groupid=100&token={0}&lang={1}";

            refer = string.Format(refer, _token, Language);
            return(HttpExtendedHelper.Post <WxUserInfoRespFree>(DefaultUserInfoUrl, dic, _cc, refer).contact_info);
        }
示例#4
0
        private ResultPerPageFree InnerUserList(string token, int pageSize, int pageIndex)
        {
            var dic = new Dictionary <string, object>
            {
                { "t", "user/index" },
                { "pagesize", pageSize },
                { "pageidx", pageIndex },
                { "type", "0" },
                { "groupid", GroupId },
                { "token", token },
                { "lang", Language },
            };
            //var s = HttpHelper.GetString(DefaultUserListUrl, dic, _cc, null);
            var stream = HttpExtendedHelper.Get(DefaultUserListUrl, dic, _cc, null);
            var doc    = new HtmlDocument();

            doc.Load(stream, Encoding);
            var ss = doc.DocumentNode.SelectNodes("//script");
            var se = new Jurassic.ScriptEngine();

            foreach (var s in ss.Where(e => e.GetAttributeValue("src", string.Empty).Equals(string.Empty)))
            {
                try
                {
                    se.Execute("if(typeof(wx)=='undefined') wx={}");
                    se.Execute(s.InnerText);
                }
                catch
                {
                    // se.Execute("if(!wxwx.cgiData)delete wx");
                }
            }
            var temp = se.GetGlobalValue("wx") as Jurassic.Library.ObjectInstance;
            var r    = ResultPerPageFree.FromObjectInstance(temp.GetPropertyValue("cgiData") as ObjectInstance);

            return(r);
        }