通过.NET微信公众号查看关注者接口的步骤

通过.NET微信公众号查看关注者接口的步骤

本文实例为大家分享了java获取不同路径的方法,供大家参考,具体内容如下

实体类:

 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">

  <div class="container">
   <div class="row">
    <div class="col-md-6 col-md-push-2">
     <asp:Button class="btn btn-primary" ID="btnGet" runat="server" Text="获取所有用户openID" OnClick="btnGet_Click" />
    </div>
    <div 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" />
    </div>
   </div>
  </div>


  <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}×tamp={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微信公众号查看关注者接口的步骤

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持路饭。