国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 微信小程序 微信開發(fā) C#實現(xiàn)微信公眾號群發(fā)消息(解決一天只能發(fā)一次的限制)實例分享

C#實現(xiàn)微信公眾號群發(fā)消息(解決一天只能發(fā)一次的限制)實例分享

Feb 20, 2017 pm 03:08 PM

總體思路:

1.首先必須要在微信公眾平臺上申請一個公眾號。

2.然后進(jìn)行模擬登陸。(由于我對http傳輸原理和編程不是特別懂,在模擬登陸的地方,不是特別清楚,希望有大神指教)

3.模擬登陸后會獲得一個token(令牌)和cookie。

4.因為模擬登陸后相當(dāng)于就進(jìn)入了微信公眾平臺,在這個里面就可以抓取到需要的數(shù)據(jù),如公眾好友的昵稱,fakeId。其中的fakeid非常重要,因為傳輸數(shù)據(jù)必須要知道對方的fakeid。

5.知道對方的fakeid就可以進(jìn)行數(shù)據(jù)的發(fā)送了。

不過里面還有一些小問題,希望有人繼續(xù)修改和討論!也有人說這樣會被封號,所以請謹(jǐn)慎操作
講一下我項目里面的主要內(nèi)容
1.WeiXinLogin.cs類是用來執(zhí)行登陸功能的

//對密碼進(jìn)行MD5加密
 static string GetMd5Str32(string str) 
    {
        MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
        // Convert the input string to a byte array and compute the hash.  
        char[] temp = str.ToCharArray();
        byte[] buf = new byte[temp.Length];
        for (int i = 0; i < temp.Length; i++)
        {
            buf[i] = (byte)temp[i];
        }
        byte[] data = md5Hasher.ComputeHash(buf);
        // Create a new Stringbuilder to collect the bytes  
        // and create a string.  
        StringBuilder sBuilder = new StringBuilder();
        // Loop through each byte of the hashed data   
        // and format each one as a hexadecimal string.  
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }
        // Return the hexadecimal string.  
        return sBuilder.ToString();
    }
//執(zhí)行登陸操作
    public static bool ExecLogin(string name,string pass)
    {
        bool result = false;
        string password = GetMd5Str32(pass).ToUpper(); 
        string padata = "username=" + name + "&pwd=" + password + "&imgcode=&f=json";
        string url = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN ";//請求登錄的URL
        try
        {
            CookieContainer cc = new CookieContainer();//接收緩存
            byte[] byteArray = Encoding.UTF8.GetBytes(padata); // 轉(zhuǎn)化
            HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(url);  //新建一個WebRequest對象用來請求或者響應(yīng)url
            webRequest2.CookieContainer = cc;                                      //保存cookie  
            webRequest2.Method = "POST";                                          //請求方式是POST
            webRequest2.ContentType = "application/x-www-form-urlencoded";       //請求的內(nèi)容格式為application/x-www-form-urlencoded
            webRequest2.ContentLength = byteArray.Length;
            Stream newStream = webRequest2.GetRequestStream();           //返回用于將數(shù)據(jù)寫入 Internet 資源的 Stream。
            // Send the data.
            newStream.Write(byteArray, 0, byteArray.Length);    //寫入?yún)?shù)
            newStream.Close();
            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();
            StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.Default);
            string text2 = sr2.ReadToEnd();
            //此處用到了newtonsoft來序列化
            WeiXinRetInfo retinfo = Newtonsoft.Json.JsonConvert.DeserializeObject<WeiXinRetInfo>(text2);
            string token = string.Empty;
            if (retinfo.ErrMsg.Length > 0)
            {
                token = retinfo.ErrMsg.Split(new char[] { &#39;&&#39; })[2].Split(new char[] { &#39;=&#39; })[1].ToString();//取得令牌
                LoginInfo.LoginCookie = cc;
                LoginInfo.CreateDate = DateTime.Now;
                LoginInfo.Token = token;
                result = true;
            }
        }
        catch (Exception ex)
        {
            throw new Exception(ex.StackTrace);
        }
        return result;
    }
    public static class LoginInfo
    {
        /// <summary>
        /// 登錄后得到的令牌
        /// </summary>        
        public static string Token { get; set; }
        /// <summary>
        /// 登錄后得到的cookie
        /// </summary>
        public static CookieContainer LoginCookie { get; set; }
        /// <summary>
        /// 創(chuàng)建時間
        /// </summary>
        public static DateTime CreateDate { get; set; }
    }

2.在WeiXin.cs類中實現(xiàn)發(fā)送數(shù)據(jù)

public static bool SendMessage(string Message, string fakeid)
    {
        bool result = false;
        CookieContainer cookie = null;
        string token = null;
        cookie = WeiXinLogin.LoginInfo.LoginCookie;//取得cookie
        token =  WeiXinLogin.LoginInfo.Token;//取得token
        string strMsg = System.Web.HttpUtility.UrlEncode(Message);  //對傳遞過來的信息進(jìn)行url編碼
        string padate = "type=1&content=" + strMsg + "&error=false&tofakeid=" + fakeid + "&token=" + token + "&ajax=1";
        string url = "https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN";
        byte[] byteArray = Encoding.UTF8.GetBytes(padate); // 轉(zhuǎn)化
        HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(url);
        webRequest2.CookieContainer = cookie; //登錄時得到的緩存
        webRequest2.Referer = "https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token=" + token + "&fromfakeid=" + fakeid + "&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN";
        webRequest2.Method = "POST";
        webRequest2.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
        webRequest2.ContentType = "application/x-www-form-urlencoded";
        webRequest2.ContentLength = byteArray.Length;
        Stream newStream = webRequest2.GetRequestStream();
        // Send the data.            
        newStream.Write(byteArray, 0, byteArray.Length);    //寫入?yún)?shù)    
        newStream.Close();
        HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();
        StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.Default);
        string text2 = sr2.ReadToEnd();
        if (text2.Contains("ok"))
        {
            result = true;
        }
        return result;
    }

3.SendMessage.aspx.cs中主要實現(xiàn)獲取fakeid

public static ArrayList SubscribeMP()
    {
        try
        {
            CookieContainer cookie = null;
            string token = null;
            cookie = WeiXinLogin.LoginInfo.LoginCookie;//取得cookie
            token = WeiXinLogin.LoginInfo.Token;//取得token
            /*獲取用戶信息的url,這里有幾個參數(shù)給大家講一下,1.token此參數(shù)為上面的token 2.pagesize此參數(shù)為每一頁顯示的記錄條數(shù)
            3.pageid為當(dāng)前的頁數(shù),4.groupid為微信公眾平臺的用戶分組的組id,當(dāng)然這也是我的猜想不一定正確*/
            string Url = "https://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&token=" + token + "&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0";
            HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(Url);
            webRequest2.CookieContainer = cookie;
            webRequest2.ContentType = "text/html; charset=UTF-8";
            webRequest2.Method = "GET";
            webRequest2.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
            webRequest2.ContentType = "application/x-www-form-urlencoded";
            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();
            StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.Default);
            string text2 = sr2.ReadToEnd();
            MatchCollection mc;
            //由于此方法獲取過來的信息是一個html網(wǎng)頁所以此處使用了正則表達(dá)式,注意:(此正則表達(dá)式只是獲取了fakeid的信息如果想獲得一些其他的信息修改此處的正則表達(dá)式就可以了。)
             Regex r = new Regex("\"fakeId\"\\s\\:\\s\"\\d+\""); //定義一個Regex對象實例
            mc = r.Matches(text2);
            Int32 friendSum = mc.Count;          //好友總數(shù)
            string fackID ="";
            ArrayList fackID1 = new ArrayList();
            for (int i = 0; i < friendSum; i++)
            {
                fackID = mc[i].Value.Split(new char[] { &#39;:&#39; })[1];
                fackID = fackID.Replace("\"", "").Trim();
                fackID1.Add(fackID);
            }
            return fackID1;
   }
        catch (Exception ex)
        {
            throw new Exception(ex.StackTrace);
        }
    }

更多C#實現(xiàn)微信公眾號群發(fā)消息(解決一天只能發(fā)一次的限制)實例分享相關(guān)文章請關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276