请选择 进入手机版 | 继续访问电脑版

[C#教程] C#获取微信小程序的云数据库中数据的示例代码

[复制链接]
查看77 | 回复9 | 2021-9-14 09:31:27 | 显示全部楼层 |阅读模式
目次

0 背景阐明

试水小程序,实现访客登记,现有.NET程序必要 获取该小程序的数据

0.1 获取AccessToken

调用绝大多数后台接口时都需利用 access_token

参考小程序文档:auth.getAccessToken

发送Get哀求 ,获取AccessToken

接口:

  • https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数:

  • appid:小程序ID
  • secret:注册时产生的密钥,可以重置
  • 两个参数信息可以在后台->开发 管理->开发 设置->开发 者设置中查看

返回值:

格式如下:

    1. {"access_token":"ACCESS_TOKEN","expires_in":7200}
    复制代码
  • access_token:获取到的凭据
  • expires_in:凭据 的有用 时间,单位:秒

0.2 数据库查询

参考小程序文档:databaseQuery

发送Post哀求 ,获取数据

接口:

  • POST https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN

参数:

接口地址中加入AccessToken

哀求 参数:

  • env:云环境ID
  • query:数据库操作语句

格式如下:

  1. { "env":"小程序环境", "query": "db.collection("集合名称").where({done:true}).limit(10).skip(1).get()" }
复制代码

query中应利用 limit()限定 单次拉取的数目 ,默认10条。

0.3 文件下载

参考小程序文档:获取文件下载链接

发送post哀求 获取

接口:

  • POST https://api.weixin.qq.com/tcb/batchdownloadfile?access_token=ACCESS_TOKEN

参数:

  • 接口地址中加入AccessToken

哀求 参数:

  • env:云环境ID
  • file_list:文件列表

格式如下:

  1. { "env": "云环境ID", "file_list": [ { "fileid":"文件ID", "max_age":7200 } ] }
复制代码

2. 简单的封装

简单的封装了发送哀求 的方法

  1. //需要添加的命名空间
  2. using Newtonsoft.Json;
  3. using System.IO;
  4. /// <summary>
  5. /// 发送http Get请求
  6. /// </summary>
  7. /// <param name="url"></param>
  8. /// <returns></returns>
  9. public static HttpWebResponse GetRequest(string url)
  10. {
  11. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  12. request.Method = "GET";
  13. request.ContentType = "application/x-www-form-urlencoded";//链接类型
  14. return request.GetResponse() as HttpWebResponse;
  15. }
  16. /// <summary>
  17. /// 发送http Post请求
  18. /// </summary>
  19. /// <returns></returns>
  20. public static HttpWebResponse PostRequest(string url, string messsage)
  21. {
  22. byte[] byteData = Encoding.UTF8.GetBytes(messsage);
  23. HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
  24. webRequest.Method = "POST";
  25. webRequest.ContentType = "application/json;charset=UTF-8";
  26. webRequest.ContentLength = byteData.Length;
  27. using (Stream stream = webRequest.GetRequestStream())
  28. {
  29. stream.Write(byteData, 0, byteData.Length);
  30. }
  31. HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
  32. return response;
  33. }
  34. /// <summary>
  35. /// 从HttpWebResponse对象中提取响应的数据转换为字符串
  36. /// </summary>
  37. /// <param name="webresponse"></param>
  38. /// <returns></returns>
  39. public static string HttpWebResponseToString(HttpWebResponse webresponse)
  40. {
  41. using (Stream s = webresponse.GetResponseStream())
  42. {
  43. StreamReader reader = new StreamReader(s, Encoding.UTF8);
  44. return reader.ReadToEnd();
  45. }
  46. }
  47. /// <summary>
  48. /// Json字符串转为匿名对象
  49. /// </summary>
  50. /// <typeparam name="T"></typeparam>
  51. /// <param name="json"></param>
  52. /// <param name="anonymousTypeObject"></param>
  53. /// <returns></returns>
  54. public static T DesAnonymousType<T>(string json, T anonymousTypeObject)
  55. {
  56. return JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
  57. }
复制代码

3. 简单测试

发送哀求 获取数据

  1. /// <summary>
  2. /// 获取access_token
  3. /// </summary>
  4. /// <returns></returns>
  5. public static string GetAccessToken()
  6. {
  7. // 通过Get请求获取access_token
  8. HttpWebResponse httpWebResponse = GetRequest("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credentiaappid=小程序ID&secret=小程序密钥");
  9. string resultJson = HttpWebResponseToString(httpWebResponse);
  10. var resultObj = DesAnonymousType(resultJson, new { access_token = "", expires_in = "" });
  11. return resultObj.access_token;
  12. }
  13. /// <summary>
  14. /// 查询数据
  15. /// </summary>
  16. /// <param name="queryString">形如: $"{{"env":"小程序环境id", "query": "db.collecti(\\"数据集合名称\\").where({{集合中字段:\\"集合中字段值\\"}}).limit(10).get()"}}"</param>
  17. /// <returns></returns>
  18. public static string GetData(string queryString)
  19. {
  20. string accessToken = GetAccessToken();
  21. HttpWebResponse httpWebResponse = PostRequest("https://api.weixin.qq.com/tcb/databasequery?access_token=" + accessTokenqueryString);
  22. string data = HttpWebResponseToString(httpWebResponse);
  23. return data;
  24. }
  25. /// <summary>
  26. /// 通过FileId获取文件下载URL
  27. /// </summary>
  28. /// <param name="queryString">形如:$"{{"env": "环境ID","file_list": [{{"fileid":文件ID","max_age":7200 }}]}}"</param>
  29. /// <returns></returns>
  30. public static string GetDownFileUrl(string queryString)
  31. {
  32. string accessToken = GetAccessToken();
  33. string url = $"https://api.weixin.qq.com/tcb/batchdownloadfile?access_token={accessToken}";
  34. HttpWebResponse httpWebResponse = PostRequest(url, queryString);
  35. string downFileUrl = HttpWebResponseToString(httpWebResponse);
  36. return downFileUrl;
  37. }
复制代码

4. 参考文档

小程序官方文档:云开发 ->数据库查询记录

小程序官方文档:接口调用凭据 ->getAccessToken

到此这篇关于C#获取微信小程序的云数据库中数据的示例代码的文章就先容 到这了,更多干系 C#获取小程序数据内容请搜索 脚本之家从前 的文章或继续欣赏 下面的干系 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 蜡烛2017 | 2021-9-22 10:42:10 | 显示全部楼层
admin楼主,你妈妈喊你回家吃饭!
回复

使用道具 举报

avatar 可怜的冯三厣 | 2021-9-27 12:50:50 | 显示全部楼层
鸟大了,什么林子都敢进啊!
回复

使用道具 举报

avatar 大圆镜2015 | 2021-10-1 22:14:26 | 显示全部楼层
禽兽不如应该不是说admin楼主的的吧?
回复

使用道具 举报

avatar 陈嘉凯 | 2021-10-6 02:36:38 | 显示全部楼层
admin楼主是我最崇拜的人!
回复

使用道具 举报

avatar 精力束台经 | 2021-10-9 21:00:02 | 显示全部楼层
内容很有深度!
回复

使用道具 举报

avatar 计儿坏 | 2021-10-11 00:26:50 | 显示全部楼层
太高深了,理解力不够用了!
回复

使用道具 举报

avatar 没想爱上你堑 | 2021-10-13 11:09:28 | 显示全部楼层
这个帖子好无聊啊!
回复

使用道具 举报

avatar 遨瀚 | 2021-10-15 20:08:15 | 显示全部楼层
admin楼主是在找骂么?
回复

使用道具 举报

在这个版块混了这么久了,第一次看见这么给你的帖子!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则