备忘录——C#获取微信小程序的云数据库中数据
0. 背景说明
试水小程序,实现访客登记,现有.NET程序需要获取该小程序的数据
0.2 获取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:注册时产生的密钥,可以重置
- 两个参数信息可以在后台->开发管理->开发设置->开发者设置中查看
返回值:
格式如下:
{"access_token":"ACCESS_TOKEN","expires_in":7200}- access_token:获取到的凭证
- expires_in:凭证的有效时间,单位:秒
0.3 数据库查询
参考小程序文档:databaseQuery
发送Post请求,获取数据
接口:
POST https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN
参数:
接口地址中加入AccessToken
请求参数:
env:云环境ID
query:数据库操作语句
格式如下:
{ "env":"小程序环境", "query": "db.collection(\"集合名称\").where({done:true}).limit(10).skip(1).get()" }
query中应使用limit()限制单次拉取的数量,默认10条。
0.4 文件下载
参考小程序文档:获取文件下载链接
发送post请求获取
- 接口:
POST https://api.weixin.qq.com/tcb/batchdownloadfile?access_token=ACCESS_TOKEN
参数:
- 接口地址中加入AccessToken
- 请求参数:
env:云环境ID
file_list:文件列表
格式如下:
{ "env": "云环境ID", "file_list": [ { "fileid":"文件ID", "max_age":7200 } ] }
2. 简单的封装
简单的封装了发送请求的方法
//需要添加的命名空间
using Newtonsoft.Json;
using System.IO;
/// <summary>
/// 发送http Get请求
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static HttpWebResponse GetRequest(string url)
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";//链接类型
return request.GetResponse() as HttpWebResponse;
}
/// <summary>
/// 发送http Post请求
/// </summary>
/// <returns></returns>
public static HttpWebResponse PostRequest(string url, string messsage)
{
byte[] byteData = Encoding.UTF8.GetBytes(messsage);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/json;charset=UTF-8";
webRequest.ContentLength = byteData.Length;
using (Stream stream = webRequest.GetRequestStream())
{
stream.Write(byteData, 0, byteData.Length);
}
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
return response;
}
/// <summary>
/// 从HttpWebResponse对象中提取响应的数据转换为字符串
/// </summary>
/// <param name="webresponse"></param>
/// <returns></returns>
public static string HttpWebResponseToString(HttpWebResponse webresponse)
{
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}
/// <summary>
/// Json字符串转为匿名对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <param name="anonymousTypeObject"></param>
/// <returns></returns>
public static T DesAnonymousType<T>(string json, T anonymousTypeObject)
{
return JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
}
3. 简单测试
发送请求获取数据
/// <summary>
/// 获取access_token
/// </summary>
/// <returns></returns>
public static string GetAccessToken()
{
// 通过Get请求获取access_token
HttpWebResponse httpWebResponse = GetRequest("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credentiaappid=小程序ID&secret=小程序密钥");
string resultJson = HttpWebResponseToString(httpWebResponse);
var resultObj = DesAnonymousType(resultJson, new { access_token = "", expires_in = "" });
return resultObj.access_token;
}
/// <summary>
/// 查询数据
/// </summary>
/// <param name="queryString">形如: $"{{\"env\":\"小程序环境id\", \"query\": \"db.collecti(\\\"数据集合名称\\\").where({{集合中字段:\\\"集合中字段值\\\"}}).limit(10).get()\"}}"</param>
/// <returns></returns>
public static string GetData(string queryString)
{
string accessToken = GetAccessToken();
HttpWebResponse httpWebResponse = PostRequest("https://api.weixin.qq.com/tcb/databasequery?access_token=" + accessTokenqueryString);
string data = HttpWebResponseToString(httpWebResponse);
return data;
}
/// <summary>
/// 通过FileId获取文件下载URL
/// </summary>
/// <param name="queryString">形如:$"{{\"env\": \"环境ID\",\"file_list\": [{{\"fileid\":文件ID\",\"max_age\":7200 }}]}}"</param>
/// <returns></returns>
public static string GetDownFileUrl(string queryString)
{
string accessToken = GetAccessToken();
string url = $"https://api.weixin.qq.com/tcb/batchdownloadfile?access_token={accessToken}";
HttpWebResponse httpWebResponse = PostRequest(url, queryString);
string downFileUrl = HttpWebResponseToString(httpWebResponse);
return downFileUrl;
}
4. 参考文档
备忘录——C#获取微信小程序的云数据库中数据的更多相关文章
- 微信小程序开发之如何哪获取微信小程序的APP ID
微信小程序的开发工具,在新建项目的时候,默认提示填写APP ID,如果不填写AppID 也是可以本地测试和开发的,但是无法通过手机调试,只能在开发工具里查看 如果需要真机调试微信小程序,需要安装微信6 ...
- 微信小程序与云开发
微信小程序基础概念 小程序云开发的三大基础能力:云数据库.云函数.云存储 Java.NodeJS.JavaScript.HTML5.CSS3.VueJs.ReactJs.前端工程化.前端架构 小程序开 ...
- 微信小程序--使用云开发完成支付闭环
微信小程序--使用云开发完成支付闭环 1.流程介绍 2. 代码实现和逻辑思想描述 云函数统一下单 对应云函数 unipay [CloudPay.unifiedOrder] 函数思路 : 调用云函数封装 ...
- Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)
ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 ArthurSlog Page GitHub NPM Package Page 掘金主页 ...
- java后台获取微信小程序openid
一.jar包准备 1.在网盘下载 链接:https://pan.baidu.com/s/15HAAWOg_yn768g4s9IrcPg 提取码:hgj0 二.在pom文件中添加依赖 1.将外部的引入的 ...
- 微信小程序添加外部地图服务数据
先上效果: 缘起 使用微信小程序做地图相关功能的时候,有个需求是需要接入自己发布的地图服务.查看微信小程序地图组件文档,发现它对地图相关的支持很少,只有一些基础功能,比如添加点.线.面.气泡和一些常规 ...
- 微信小程序之云开发一
最近听说微信小程序发布了云开发,可以不需要购买服务器,就能开发小程序和发布小程序,对于动辄千元的服务器,极大的节约了开发成本,受不住诱惑,我就开始了小程序的云开发,目前项目已上线,亲测不收费,闲不住的 ...
- JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息
一,首先说明下这个微信的openid 为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开 ...
- 微信小程序知识云开发
一个小程序最多5个服务类目,一个月可以修改3次类目 小程序侵权投诉的发起与应对 软件著作权作品登记证书 实现小程序支付功能 如何借助官方支付api简单.高效率地实现小程序支付功能 借助小程序云开发实现 ...
随机推荐
- GCD SUM
GCD SUM 求 \[\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j) \] 将原式变换得到 \[\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{ ...
- GC垃圾回收机制详解
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方式就是那些new一类的操作 ...
- Mac终端美化(iterm2+zsh+oh-my-zsh+powerlevel10k)
iterm2+zsh+oh-my-zsh+powerlevel10k 一.下载iterm2 方式一:官网下载 https://iterm2.com/ 方式二:百度云下载 链接: https://pan ...
- 智能停车场车牌识别系统【python】
百度AI:https://ai.baidu.com 申请App_id 代码重点:pip install baidu_api from aip import AipOcr import os # 百 ...
- intouch 趋势图Y轴自适应功能完善
在项目中有利用到历史趋势,其y轴往往展示的是该点的最小/最大值范围,对于曲线波动展示不够友好.故而利用自带方法进行完善,以此记录. Histrend1.MinRange=HTGetAutoScaleV ...
- thinkPHP5 5.0.23 远程代码执行漏洞
修改数据包 POST /index.php?s=captcha HTTP/1.1 Host: 192.168.49.2:8080 User-Agent: Mozilla/5.0 (Macintosh; ...
- DC-9靶机
仅供个人娱乐 靶机信息 下载地址:http://www.five86.com/downloads/DC-9.zip 一.主机扫描 二.信息收集 三.漏洞查找和利用 发现search的地方可能有sql注 ...
- 大数据学习(15)—— B+树和LSM
这一节介绍数据库存储引擎常用的两种数据结构.作为关系型数据库的代表,MySql的InnoDB使用B+树来存储索引.作为NoSQL的代表,HBase使用的LSM树,我们来看看两者有什么区别. B+树 B ...
- PPT学习总结
[一]关注 1. 内容 2. 结构 3. 配色 4. 素材 5. 构图 6. 动画 [二]技巧 1. 颜色对比 2. 动画突出 [三]参考 https://www.zhihu.com/question ...
- user-agent随笔
常用的user-agent: 一.pc端的user-agent汇总,各大浏览器 1.safari 5.1 – MAC Mozilla/5.0 (Macintosh; U; Intel Mac OS X ...