站内搜索

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

实体类:

 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实例教程的详细内容,更多请关注php中文网其它相关文章!

  • 上一篇:关于微信小程序提交审核标准和下架标准的介绍
  • 下一篇:ASP.NET实现微信抢红包代码实例