C#獲取微信小程序的云數(shù)據(jù)庫(kù)中數(shù)據(jù)的示例代碼
0 背景說(shuō)明
試水小程序,實(shí)現(xiàn)訪客登記,現(xiàn)有.NET程序需要獲取該小程序的數(shù)據(jù)
0.1 獲取AccessToken
調(diào)用絕大多數(shù)后臺(tái)接口時(shí)都需使用 access_token
參考小程序文檔:auth.getAccessToken
發(fā)送Get請(qǐng)求,獲取AccessToken
接口:
- https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
參數(shù):
- appid:小程序ID
- secret:注冊(cè)時(shí)產(chǎn)生的密鑰,可以重置
- 兩個(gè)參數(shù)信息可以在后臺(tái)->開(kāi)發(fā)管理->開(kāi)發(fā)設(shè)置->開(kāi)發(fā)者設(shè)置中查看
返回值:
格式如下:
- access_token:獲取到的憑證
- expires_in:憑證的有效時(shí)間,單位:秒
{"access_token":"ACCESS_TOKEN","expires_in":7200}
0.2 數(shù)據(jù)庫(kù)查詢
參考小程序文檔:databaseQuery
發(fā)送Post請(qǐng)求,獲取數(shù)據(jù)
接口:
- POST https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN
參數(shù):
接口地址中加入AccessToken
請(qǐng)求參數(shù):
- env:云環(huán)境ID
- query:數(shù)據(jù)庫(kù)操作語(yǔ)句
格式如下:
{ "env":"小程序環(huán)境", "query": "db.collection(\"集合名稱\").where({done:true}).limit(10).skip(1).get()" }
query中應(yīng)使用limit()限制單次拉取的數(shù)量,默認(rèn)10條。
0.3 文件下載
參考小程序文檔:獲取文件下載鏈接
發(fā)送post請(qǐng)求獲取
接口:
- POST https://api.weixin.qq.com/tcb/batchdownloadfile?access_token=ACCESS_TOKEN
參數(shù):
- 接口地址中加入AccessToken
請(qǐng)求參數(shù):
- env:云環(huán)境ID
- file_list:文件列表
格式如下:
{ "env": "云環(huán)境ID", "file_list": [ { "fileid":"文件ID", "max_age":7200 } ] }
2. 簡(jiǎn)單的封裝
簡(jiǎn)單的封裝了發(fā)送請(qǐng)求的方法
//需要添加的命名空間 using Newtonsoft.Json; using System.IO; /// <summary> /// 發(fā)送http Get請(qǐng)求 /// </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";//鏈接類(lèi)型 return request.GetResponse() as HttpWebResponse; } /// <summary> /// 發(fā)送http Post請(qǐng)求 /// </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對(duì)象中提取響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為字符串 /// </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字符串轉(zhuǎn)為匿名對(duì)象 /// </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. 簡(jiǎn)單測(cè)試
發(fā)送請(qǐng)求獲取數(shù)據(jù)
/// <summary> /// 獲取access_token /// </summary> /// <returns></returns> public static string GetAccessToken() { // 通過(guò)Get請(qǐng)求獲取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> /// 查詢數(shù)據(jù) /// </summary> /// <param name="queryString">形如: $"{{\"env\":\"小程序環(huán)境id\", \"query\": \"db.collecti(\\\"數(shù)據(jù)集合名稱\\\").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> /// 通過(guò)FileId獲取文件下載URL /// </summary> /// <param name="queryString">形如:$"{{\"env\": \"環(huán)境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. 參考文檔
小程序官方文檔:云開(kāi)發(fā)->數(shù)據(jù)庫(kù)查詢記錄
小程序官方文檔:接口調(diào)用憑證->getAccessToken
到此這篇關(guān)于C#獲取微信小程序的云數(shù)據(jù)庫(kù)中數(shù)據(jù)的示例代碼的文章就介紹到這了,更多相關(guān)C#獲取小程序數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#查找素?cái)?shù)實(shí)現(xiàn)方法
這篇文章主要介紹了C#查找素?cái)?shù)實(shí)現(xiàn)方法,程序中有很多使用的功能模塊,非常適合C#初學(xué)者學(xué)習(xí)借鑒,需要的朋友可以參考下2014-08-08C#中字符串與字節(jié)數(shù)組的轉(zhuǎn)換方式
這篇文章介紹了C#中字符串與字節(jié)數(shù)組的轉(zhuǎn)換方式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Unity技術(shù)手冊(cè)之Toggle切換使用實(shí)例
這篇文章主要為大家介紹了Unity技術(shù)手冊(cè)之Toggle切換使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11使用 BenchmarkDotNet 對(duì) C# 代碼進(jìn)行基準(zhǔn)測(cè)試
這篇文章主要介紹了使用 BenchmarkDotNet 對(duì) C# 代碼進(jìn)行基準(zhǔn)測(cè)試,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C# 圖片與Base64碼的相互轉(zhuǎn)化問(wèn)題(代碼詳解)
這篇文章主要介紹了C# 圖片與Base64碼的相互轉(zhuǎn)化的代碼,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03DevExpress實(shí)現(xiàn)為T(mén)extEdit設(shè)置水印文字的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)為T(mén)extEdit設(shè)置水印文字的方法,對(duì)C#程序設(shè)計(jì)人員來(lái)說(shuō)是一個(gè)很實(shí)用的技巧,需要的朋友可以參考下2014-08-08C#利用反射實(shí)現(xiàn)多數(shù)據(jù)庫(kù)訪問(wèn)
本文詳細(xì)講解了C#利用反射實(shí)現(xiàn)多數(shù)據(jù)庫(kù)訪問(wèn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03