搜索
首页微信小程序微信开发微信公众号查看关注者接口的.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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)