搜尋
首頁微信小程式微信開發微信公眾號查看追蹤者介面的.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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。