免註冊公眾號的三種微信推送訊息服務的C#程式碼實現
【溫馨提示】 本文共1678字,3張圖。預計閱讀時間需要5分鐘。
有時候我們需要監控一些網路上的變化,但是每次去重新整理網頁卻又很麻煩,而且大部分重新整理的時候網頁並沒有更新。那麼有沒有一個工具,可以監控網頁變化,並將變化的結果推送到手機微信上呢?
這裡有很多應用場景,比如前一段時間很火的工具來監控JD、TB等口罩是否有貨的狀態、還有就是刷票、搶課、監聽網頁便也變化、爬蟲等等。
我們可以在後臺寫一個監控程式,一旦口罩有貨了,就立馬推送訊息到微信上。
有人會說這樣的方式,微信公眾號可以實現啊,那麼為什麼要你介紹?
不不不,註冊微信公眾號後,還要閱讀官方的各種文件,反覆除錯,才能順利實現這樣的服務。
現在下面介紹的推送服務,可以我們可以呼叫一個簡單的HTTP請求即可實現。
1. Server醬
介紹:
「Server醬」,英文名「ServerChan」,是一款「程式設計師」和「伺服器」之間的通訊軟體。
說人話?就是從伺服器推報警和日誌到手機的工具。
開通並使用上它,只需要一分鐘:
- 登入:用GitHub賬號登入網站,就能獲得一個SCKEY(在「傳送訊息」頁面)
- 繫結:點選「微信推送」,掃碼關注同時即可完成繫結
- 發訊息:往 http://sc.ftqq.com/SCKEY.send 發GET請求,就可以在微信裡收到訊息啦
用法:
Server醬使用方法非常簡單,向url傳送一個Get/Post請求即可。
https://sc.ftqq.com/[SCKEY(登入後可見)].send
接受兩個引數:
- text:訊息標題,最長為256,必填。
- desp:訊息內容,最長64Kb,可空,支援MarkDown。
最簡單的訊息傳送方式是通過瀏覽器,在位址列輸入以下URL,回車後即可傳送:
https://sc.ftqq.com/[SCKEY(登入後可見)].send?text=主人伺服器又掛掉啦~
缺點:
傳送後的訊息內容不可以預覽,需要點選進去才可以看見。作者說是收到很多人投訴,我也想不通,到底是哪些SB們投訴的。
MMP!
C#使用方法:
//Server醬 var response = await httpClient.GetAsync("https://sc.ftqq.com/YourKey.send" + "?text=" + "測試標題" + DateTime.Now + "&desp=" + "測試內容" + DateTime.Now); string res = await response.Content.ReadAsStringAsync(); Console.WriteLine("Server醬傳送狀態:" + response.StatusCode); Console.WriteLine(res);
2. WxPusher
介紹:
微信訊息推送服務(公眾號:WxPusher)是通過API給個人微信傳送訊息的即時推送服務。
可能你有爬蟲,刷票,搶課等服務,當他們的狀態發生變更的時候,你可以通過簡單的HTTP請求,通過WxPusher,把這些資訊實時的推送到你的個人微信上。
WxPusher是免費且沒有限制的,但是請注意不要推送敏感詞!
用法:
1、關注微信公眾號:開發者服務(wxpusher)
2、點選「我的ID」,獲取到你的專屬推送ID,使用這個ID給你自己發訊息。
一個微信使用者唯一對應一個ID,並且是不會變的,擁有這個ID就可以給對應的微訊號傳送訊息,請注意不要洩漏。
3、通過HTTP介面,傳送訊息給微信。
缺點:
關注公眾號後,還需要關注一下自己的應用二維碼才可以,第一次接入稍微有點麻煩。但是API提供了豐富的服務,仔細閱讀一般都可以除錯通過。
官方的API說明有點混亂,首頁說Post方法即將廢棄,而在SDK頁面卻又推薦使用Post,說Get是閹割版。
C#程式碼:
//WxPusher //Post var json = new WxPusherModel { appToken = "AT_xxxxxxxxxxxxx", content = "測試WxPusher Post" + DateTime.Now, contentType = 1, topicIds = new int[] { 150 }, uids = new string[] { "UID_xxxx" }, }; string temp = JsonConvert.SerializeObject(json); HttpContent content = new StringContent(temp, Encoding.UTF8, "application/json"); var response2 = await httpClient.PostAsync("http://wxpusher.zjiecode.com/api/send/message", content); string res2 = await response2.Content.ReadAsStringAsync(); Console.WriteLine("WxPusher Post傳送狀態:" + response2.StatusCode); Console.WriteLine(res2); //Get string url = "http://wxpusher.zjiecode.com/api/send/message/?appToken=AT_xxxxx&uid=UID_xxxxx&content=" + HttpUtility.UrlEncode("測試WxPusher Get"); var response3 = await httpClient.GetAsync(url); string res3 = await response3.Content.ReadAsStringAsync(); Console.WriteLine("WxPusher Get傳送狀態:" + response3.StatusCode); Console.WriteLine(res3);
3. 即時達
介紹:
通過呼叫一個簡單的介面,將要推送的訊息提交後,您將在微信收到推送的訊息,簡單快捷
可以應用的場景伺服器重啟,伺服器異常資訊推送,訂單推送等各種可想到的推送
無需任何註冊,只需要關注公眾號“即時達推送”,即可及時收到推送的訊息
使用方法:
- 先關注公眾號“即時達推送”
- 請使用chrome瀏覽器訪問http://push.ijingniu.cn
- 無需註冊,直接微信掃碼登入
- 建立訊息通道,獲得該通道的訂閱二維碼和通道Key
- 讓你的使用者掃碼該通道的訂閱二維碼訂閱該通道
- 呼叫API使用通道Key向該通道推送訊息
同樣支援Get/Post方法。
Get
http://push.ijingniu.cn/send?key=channelkey&head=msgHead&body=msgBody 說明:如遇到亂碼請自行給相關引數編碼,如果body太長請用POST方式
Post
http://push.ijingniu.cn/send post引數: key=channelKey&head=msgHead&body=msgBody
C#程式碼:
//即時達 //Post var nvc = new List<KeyValuePair<string, string>>(); nvc.Add(new KeyValuePair<string, string>("key", "xxxxx")); nvc.Add(new KeyValuePair<string, string>("head", "測試即時達 Post")); nvc.Add(new KeyValuePair<string, string>("body", "測試即時達 Post " + DateTime.Now)); var client = new HttpClient(); var request4 = new HttpRequestMessage(HttpMethod.Post, "http://push.ijingniu.cn/send") { Content = new FormUrlEncodedContent(nvc) }; var res4 = await client.SendAsync(request4); Console.WriteLine("WxPusher Get傳送狀態:" + res4.StatusCode); Console.WriteLine(await res4.Content.ReadAsStringAsync()); //Get string url2 = "http://push.ijingniu.cn/send?key=xxxxxx&head=" + HttpUtility.UrlEncode("測試即時達 Get") + "&body=" + HttpUtility.UrlEncode("測試即時達" + DateTime.Now); var response5 = await httpClient.GetAsync(url2); string res5 = await response5.Content.ReadAsStringAsync(); Console.WriteLine("WxPusher Get傳送狀態:" + response5.StatusCode); Console.WriteLine(res5);
o,對了,別忘了加上引用。
using System.Net.Http;
還有例項化一個client
var httpClient = new HttpClient();
4. 總結
感謝以上三種方法的原創作者,把原本複雜的微信推送服務變得非常簡單。
具體哪一個好,需要看自己的需要來應用到自己的專案中。