微信公众号查看关注者接口的.NET实例教程

互联网 17-4-26
实体类:
 public class userlist    {      public string total { get; set; }      public string count { get; set; }      public userlistopenid data { get; set; }      public string next_openid { get; set; }    }
 public class userlistopenid    {      public List<string> openid { get; set;    }
 public class userdetail    {      public int subscribe { get; set; }      public string openid { get; set; }      public string nickname { get; set; }      public int sex { get; set; }      public string language { get; set; }      public string city { get; set; }      public string province { get; set; }      public string country { get; set; }      public string headimgurl { get; set; }      public int subscribe_time { get; set; }      public string unionid { get; set; }      public string remark { get; set; }      public int groupid { get; set; }      public int[] tagid_list { get; set; }    }

getUser.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="getUser.aspx.cs" Inherits="MyTest.WebUI.Manager.usermsg.getUser" %>    <!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title></title>    <!-- Bootstrap -->    <link href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">    <!--[if lt IE 9]>     <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>     <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>    <![endif]-->  </head>  <body>    <form runat="server">        <p class="container">        <p class="row">          <p class="col-md-6 col-md-push-2">            <asp:Button class="btn btn-primary" ID="btnGet" runat="server" Text="获取所有用户openID" OnClick="btnGet_Click" />          </p>          <p class="col-md-6 col-md-pull-2">            <asp:DropDownList CssClass="form-control" ID="ddlopenids" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlopenids_SelectedIndexChanged"></asp:DropDownList>            <asp:Label ID="lblMSG" runat="server" Text=""></asp:Label>            <asp:Image class="img-circle" ID="imgHead" runat="server" Width="180px" Height="180px" />          </p>        </p>      </p>          <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>      <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>    </form>  </body>  </html>
 public partial class getUser : System.Web.UI.Page    {      protected void Page_Load(object sender, EventArgs e)      {        }        //获取用户列表      protected void btnGet_Click(object sender, EventArgs e)      {        string next_opid = string.Empty;        string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+mainArg.get_Token()+"&next_openid=";        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);        using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())        {          StreamReader sr = new StreamReader(response.GetResponseStream());          string result = sr.ReadToEnd();          sr.Close();            MyTest.Common.Entity.userlist userlist = MyTest.Common.Util.JsonEntityExchange<MyTest.Common.Entity.userlist>.Json2Entity(result);          //Response.Write(userlist.count + "/"+userlist.data+"/"+userlist.next_openid+"/"+userlist.total);          ddlopenids.DataSource = userlist.data.openid;          ddlopenids.DataTextField = "";          ddlopenids.DataValueField = "";          ddlopenids.DataBind();          ListItem item = new ListItem();          item.Text = "--请选择用户的openID--";          item.Value = "--0--";          ddlopenids.Items.Insert(0, item);          }      }          //获取用户基本信息(包括UnionID机制)      protected void ddlopenids_SelectedIndexChanged(object sender, EventArgs e)      {        string url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+ mainArg.get_Token() + "&openid="+ddlopenids.SelectedItem.Text+"&lang=zh_CN ";        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);        using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())        {          StreamReader sr = new StreamReader(response.GetResponseStream());          string result = sr.ReadToEnd();          sr.Close();          MyTest.Common.Entity.userdetail user= MyTest.Common.Util.JsonEntityExchange<MyTest.Common.Entity.userdetail>.Json2Entity(result);            lblMSG.Text = user.subscribe + "/" + user.openid + "/" + user.nickname + "/";          imgHead.ImageUrl = user.headimgurl;          }      }    }

mainArg.cs获取accessToken帮助类:

 public class mainArg    {      //测试号      public static string appid = "wx3eb5bf1290db2ca0";      public static string secret = "e6013be0a7338c7d3e02877db116e231";        public string jsapi_ticket;      public string noncestr;      public long timestamp;      public string signature;        private static string path = HttpContext.Current.Server.MapPath(@"~/TemplePath");      private static string tokenPath = HttpContext.Current.Server.MapPath(@"~/TemplePath/token.txt");      private static string ticketPath = HttpContext.Current.Server.MapPath(@"~/TemplePath/ticket.txt");        public mainArg() {        noncestr = getNonceStr();        timestamp = getTime();      }      /// <summary>      /// 获取access_token      /// </summary>      /// <returns></returns>      public static string get_Token()      {        string token = null;        //判断是否存在或过期        if (File.Exists(tokenPath)) {          FileStream fs = new FileStream(tokenPath, FileMode.Open);          var serializer = new DataContractJsonSerializer(typeof(AccToken));          AccToken readJSToken = (AccToken)serializer.ReadObject(fs);          fs.Close();          FileInfo fi = new FileInfo(tokenPath);          if (CheckTimeOut(fi.LastWriteTime) < (readJSToken.expires_in-200)) {              return token = readJSToken.access_token;          }          }          string url = @"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";        string urlarg = @"appid=" + appid + @"&secret=" + secret;        //      HttpUtility.UrlEncode(appid,Encoding.GetEncoding("utf-8"));        url += urlarg;        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);        using (WebResponse response = req.GetResponse())        {          Stream s = response.GetResponseStream();          StreamReader sr = new StreamReader(s);          token = sr.ReadToEnd();            if (!Directory.Exists(path))          {            Directory.CreateDirectory(path);          }          if (File.Exists(tokenPath))          {            File.Delete(tokenPath);          }          FileStream fs = File.Create(tokenPath);          StreamWriter sw = new StreamWriter(fs);          sw.Write(token);          sw.Flush();          sw.Close();          fs.Close();          FileStream fs1 = new FileStream(tokenPath, FileMode.Open);          var serializer = new DataContractJsonSerializer(typeof(AccToken));          AccToken readJSToken = (AccToken)serializer.ReadObject(fs1);          fs1.Close();          token = readJSToken.access_token;          return token;        }        }      /// <summary>      /// 获取ticket      /// </summary>      /// <returns></returns>      public string getTicket() {        string ticket = null;        // 判断是否存在或过期        if (File.Exists(ticketPath))        {          FileStream fs = new FileStream(ticketPath, FileMode.Open);          var serializer = new DataContractJsonSerializer(typeof(JsTicket));          JsTicket readJSTicket = (JsTicket)serializer.ReadObject(fs);          fs.Close();          FileInfo fi = new FileInfo(ticketPath);          if (CheckTimeOut(fi.LastWriteTime) < (readJSTicket.expires_in - 200))          {              return ticket = readJSTicket.ticket;          }          }          string url = @"https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&";        string urlarg = @"access_token="+get_Token();        //      HttpUtility.UrlEncode(appid,Encoding.GetEncoding("utf -8"));        url += urlarg;        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);        using (WebResponse response = req.GetResponse())        {          Stream s = response.GetResponseStream();          StreamReader sr = new StreamReader(s);          ticket = sr.ReadToEnd();            if (!Directory.Exists(path))          {            Directory.CreateDirectory(path);          }          if (File.Exists(ticketPath))          {            File.Delete(ticketPath);          }          FileStream fs = File.Create(ticketPath);          StreamWriter sw = new StreamWriter(fs);          sw.Write(ticket);          sw.Flush();          sw.Close();          fs.Close();          FileStream fs1 = new FileStream(ticketPath, FileMode.Open);          var serializer = new DataContractJsonSerializer(typeof(JsTicket));          JsTicket readJSTicket = (JsTicket)serializer.ReadObject(fs1);          fs1.Close();          ticket = readJSTicket.ticket;          return ticket;        }        }      //      public static long getTime() {        return Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);      }      public static string getTimeString(DateTime dt)      {        TimeSpan ts = dt.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);        return Convert.ToInt64(ts.TotalSeconds).ToString();      }      //获取16位随机字符串      public static string getNonceStr()      {        int length = 16;        string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";        string str = "";        Random rad = new Random();        for (int i = 0; i < length; i++)        {          str += chars.Substring(rad.Next(0, chars.Length - 1), 1);        }        return str;      }          //得到签名      public string getSign() {          jsapi_ticket = getTicket();        string s1 = string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url=http://winsee.imwork.net/Manager/Main/testjs.aspx", jsapi_ticket, noncestr, timestamp.ToString());             signature = GetSHA1(s1);        return signature;      }      public static string GetSHA1(string strSource)      {        string strResult = string.Empty;            System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create();        byte[] bytResult = sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));        for (int i = 0; i < bytResult.Length; i++)        {          strResult = strResult + bytResult[i].ToString("x2");        }        return strResult;      }      //SHA1哈希加密算法       public static string GetSHA1_1(string str_sha1_in)      {        SHA1 sha1 = new SHA1CryptoServiceProvider();        byte[] bytes_sha1_in = Encoding.Default.GetBytes(str_sha1_in);        byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);        string str_sha1_out = BitConverter.ToString(bytes_sha1_out);        str_sha1_out = str_sha1_out.Replace("-", "").ToLower();        return str_sha1_out;      }        // 判断是否超过7200s      public static long CheckTimeOut(DateTime changeTime)      {        return Convert.ToInt64((DateTime.Now - changeTime).TotalSeconds);        }          }       # region 创建Json序列化 及反序列化类目     //创建JSon类 保存文件 ticket.txt    public class AccToken    {        public string access_token { get; set; }      public long expires_in { get; set; }    }      //创建从微信返回结果的一个类 用于获取ticket     public class JsTicket    {        public long errcode { get; set; }      public string errmsg { get; set; }      public string ticket { get; set; }      public long expires_in { get; set; }    }    #endregion

JSon序列化,反序列化

public class JsonEntityExchange<T> where T:new()    {      /// <summary>      /// json转实体LIST      /// </summary>      /// <param name="JsonStr"></param>      /// <returns></returns>      public static List<T> Json2Entitys(string JsonStr)      {        JavaScriptSerializer Serializer = new JavaScriptSerializer();        List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);        return objs;      }      /// <summary>      /// json转实体      /// </summary>      /// <param name="json"></param>      /// <returns></returns>      public static T Json2Entity(string json)      {        T obj = Activator.CreateInstance<T>();        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))        {          DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());          return (T)serializer.ReadObject(ms);        }      }      /// <summary>      /// 实体转json      /// </summary>      /// <param name="lists">实体list</param>      /// <returns></returns>      public static string Entity2Json(List<T> lists) {          return new JavaScriptSerializer().Serialize(lists);      }    }

结果如图:

以上就是微信公众号查看关注者接口的.NET实例教程的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:微信公众号中用户分组管理.NET实例详解

相关资讯