C#获取微信小程序的云数据库中数据的示例代码
程序员文章站
2022-03-10 14:40:44
目录0.1 获取accesstoken0 背景说明试水小程序,实现访客登记,现有.net程序需要获取该小程序的数据0.1 获取accesstoken调用绝大多数后台接口时都需使用 access_tok...
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:注册时产生的密钥,可以重置
- 两个参数信息可以在后台->开发管理->开发设置->开发者设置中查看
返回值:
格式如下:
- access_token:获取到的凭证
- expires_in:凭证的有效时间,单位:秒
{"access_token":"access_token","expires_in":7200}
0.2 数据库查询
参考小程序文档: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.3 文件下载
参考小程序文档:获取文件下载链接
发送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. 参考文档
小程序官方文档:接口调用凭证->getaccesstoken
到此这篇关于c#获取微信小程序的云数据库中数据的示例代码的文章就介绍到这了,更多相关c#获取小程序数据内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: C#中的协变与逆变小结
推荐阅读
-
150行代码带你实现微信小程序中的数据侦听
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
微信小程序云开发修改云数据库中的数据方法
-
微信小程序使用form表单获取输入框数据的实例代码
-
解决微信小程序云开发中获取数据库的内容为空的方法
-
微信小程序实现用table显示数据库反馈的多条数据功能示例
-
C#获取微信小程序的云数据库中数据的示例代码
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
微信小程序中数据过滤的实现方法介绍(代码)
-
微信小程序中实现手指缩放图片的示例代码