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

网友投稿 579 2023-11-13

目录0 背景说明 0.1 获取AccessToken 0.2 数据库查询 0.3 文件- 2. 简单的封装 3. 简单测试 4. 参考文档

0 背景说明

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

试水小程序,实现访客登记,现有.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:文件列表

格式如下:

2. 简单的封装

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//需要添加的命名空间
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. 简单测试

发送请求获取数据

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/// <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# 连接本地数据库的实现示例使用C#连接并读取MongoDB数据库C#利用反射实现多数据库访问c#如何利用定时器自动备份数据库详解C# 制作PictureBox圆形头像框并从数据库中读取头像C#如何在窗体程序中操作数据库数据

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:有哪些适合女生创业的小项目APP
下一篇:医药APP开发方案分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~