Esempio n. 1
0
        private void AskWeixin(string token, string nextopenid, int nowotainno)
        {
            //获取关注者列表

            string geturl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + token;

            if (nextopenid != "")
            {
                geturl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + token + "&next_openid=" + nextopenid;
            }
            string      jsonText = new GetUrlData().HttpGet(geturl);
            XmlDocument doc      = (XmlDocument)JsonConvert.DeserializeXmlNode("{\"root\":" + jsonText + "}");

            XmlElement rootElement = doc.DocumentElement;

            if (rootElement.SelectSingleNode("errcode") == null)
            {
                int     id          = 0;
                string  total       = rootElement.SelectSingleNode("total").InnerText;
                string  count       = rootElement.SelectSingleNode("count").InnerText;
                string  next_openid = rootElement.SelectSingleNode("next_openid").InnerText;
                XmlNode data        = rootElement.SelectSingleNode("data");
                string  openid      = "";
                foreach (XmlNode node in data.ChildNodes)
                {
                    openid += node.InnerText + ",";
                }
                openid = openid.Substring(0, openid.Length - 1);

                DateTime obtaintime = DateTime.Now;
                string   errcode    = "";
                string   errmsg     = "";

                int insertlog = new ObtainGzListLogData().InsObtainLog(id, total, count, openid, next_openid, obtaintime, errcode, errmsg, comid, dealuserid, nowotainno);
            }
            else
            {
                int      id          = 0;
                string   total       = "0";
                string   count       = "0";
                string   next_openid = "0";
                string   openid      = "";
                DateTime obtaintime  = DateTime.Now;
                XmlNode  data        = rootElement.SelectSingleNode("data");
                string   errcode     = rootElement.SelectSingleNode("errcode").InnerText;
                string   errmsg      = rootElement.SelectSingleNode("errmsg").InnerText;

                int insertlog = new ObtainGzListLogData().InsObtainLog(id, total, count, openid, next_openid, obtaintime, errcode, errmsg, comid, dealuserid, nowotainno);
            }
        }
Esempio n. 2
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            initJavascript();
            //根据公司id得到开发者凭据
            WeiXinBasic basicc = new WeiXinBasicData().GetWxBasicByComId(comid);

            if (basicc != null)
            {
                //获取凭证(首先判断数据库是否存在凭证以及是否过期,如过期,重新获取)
                WXAccessToken token = GetAccessToken(comid, basicc.AppId, basicc.AppSecret);

                //获得以前总共抓取关注者列表的次数
                int MaxOtainNo = new ObtainGzListLogData().GetMaxObtainNo(comid);

                //计算需要向微信端发送请求次数
                int weixintotal = AskWeixinTotal(token.ACCESS_TOKEN);//获得关注微信用户总数目
                if (weixintotal == 0)
                {
                    Literal1.Text = "获得关注微信用户总数目出错";
                    return;
                }
                int askno = int.Parse(Math.Ceiling((double)weixintotal / (double)10000).ToString());

                for (int i = 0; i < askno; i++)
                {
                    if (i == 0)//第一次请求,发送无参数next_openid
                    {
                        AskWeixin(token.ACCESS_TOKEN, "", MaxOtainNo + 1);
                    }
                    else //第一次以后请求,发送带参数next_openid
                    {
                        string next_openid = new ObtainGzListLogData().GetNextOpenId(comid, MaxOtainNo + 1);
                        if (next_openid != "")
                        {
                            AskWeixin(token.ACCESS_TOKEN, next_openid, MaxOtainNo + 1);
                        }
                    }
                }

                //BindGrid(comid, MaxOtainNo + 1);
                UnloadJavascript();
                Literal1.Text = "共获取微信关注用户数量:" + weixintotal;
            }
            else
            {
                UnloadJavascript();
                Literal1.Text = "公司开发者凭据获取有误";
            }
        }
Esempio n. 3
0
        protected void Button2_Click(object sender, EventArgs e)
        {
            initJavascript();
            //获得以前总共抓取关注者列表的次数
            int MaxOtainNo = new ObtainGzListLogData().GetMaxObtainNo(comid);

            if (MaxOtainNo == 0)
            {
                Literal2.Text = "还未获取过微信关注者列表";
            }
            else
            {
                ////验证一下是否拆分过,拆分过不在拆分
                //bool issplited = false;
                //if (issplited == true)
                //{
                //    Literal2.Text = "关注者列表已经拆分过无需再分";
                //    return;
                //}
                //else
                //{
                //获得以前总共拆分过关注者列表的次数
                int MaxSplitNo = new ObtainGzListSplitData().MaxSplitNo(comid, MaxOtainNo);

                IList <ObtainGzListLog> loglist = new ObtainGzListLogData().GetObtaingzlistlog(comid, MaxOtainNo);
                if (loglist != null)
                {
                    string openidstr = "";
                    foreach (ObtainGzListLog log in loglist)
                    {
                        openidstr += log.Openid + ",";
                    }
                    openidstr = openidstr.Substring(0, openidstr.Length - 1);

                    string[] str = openidstr.Split(',');

                    //每20000个一组,判断可以拆分为几组
                    int splitnum = int.Parse(Math.Ceiling((double)(str.Length) / (double)20000).ToString());

                    if (splitnum == 1)
                    {
                        ObtainGzListSplit splitmodel = new ObtainGzListSplit
                        {
                            Id          = 0,
                            Comid       = comid,
                            Dealerid    = dealuserid,
                            Total       = str.Length,
                            Splitcount  = str.Length,
                            Splitno     = MaxSplitNo + 1,
                            Obtainno    = MaxOtainNo,
                            Splittime   = DateTime.Now,
                            Splitopenid = openidstr,
                            Issuc       = 1
                        };

                        new ObtainGzListSplitData().InsertsObtainGzListSplit(splitmodel);
                    }
                    else
                    {
                        //获取拆分的openid字符串
                        for (int i = 1; i <= splitnum; i++)
                        {
                            if (i == splitnum)
                            {
                                //录入最后不满20000的openid字符串
                                string splitopenid = "";
                                for (int j = 20000 * (splitnum - 1); j < str.Length; j++)
                                {
                                    splitopenid += str[j] + ",";
                                }
                                splitopenid = splitopenid.Substring(0, splitopenid.Length - 1);
                                ObtainGzListSplit splitmodel = new ObtainGzListSplit
                                {
                                    Id          = 0,
                                    Comid       = comid,
                                    Dealerid    = dealuserid,
                                    Total       = str.Length,
                                    Splitcount  = (str.Length) % 20000,
                                    Splitno     = MaxSplitNo + 1,
                                    Obtainno    = MaxOtainNo,
                                    Splittime   = DateTime.Now,
                                    Splitopenid = splitopenid,
                                    Issuc       = 1
                                };

                                new ObtainGzListSplitData().InsertsObtainGzListSplit(splitmodel);
                            }
                            else
                            {
                                string splitopenid = "";
                                for (int j = 20000 * (i - 1); j < 20000 * i; j++)
                                {
                                    splitopenid += str[j] + ",";
                                }
                                splitopenid = splitopenid.Substring(0, splitopenid.Length - 1);


                                ObtainGzListSplit splitmodel = new ObtainGzListSplit
                                {
                                    Id          = 0,
                                    Comid       = comid,
                                    Dealerid    = dealuserid,
                                    Total       = str.Length,
                                    Splitcount  = 20000,
                                    Splitno     = MaxSplitNo + 1,
                                    Obtainno    = MaxOtainNo,
                                    Splittime   = DateTime.Now,
                                    Splitopenid = splitopenid,
                                    Issuc       = 1
                                };

                                new ObtainGzListSplitData().InsertsObtainGzListSplit(splitmodel);
                            }
                        }
                    }

                    UnloadJavascript();
                    Literal2.Text = "微信关注者总数目:" + str.Length;


                    BindGrid2(comid, MaxSplitNo + 1, MaxOtainNo);
                }
                else
                {
                    UnloadJavascript();
                    Literal2.Text = "获取微信关注者列表为空";
                }
                //}
            }
        }