当前位置: 移动技术网 > IT编程>开发语言>.net > .NET微信公众号查看关注者接口

.NET微信公众号查看关注者接口

2017年12月12日  | 移动技术网IT编程  | 我要评论

小伙时代微电影,中星9号最新节目表,堕天地狱兽出场集数

本文实例为大家分享了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);
    }
  }

结果如图:

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网