最近在接觸微信開發,也有在看php的程式碼,不過最後還是使用c#語言了;
在後台新建了index.ashx文件,這樣速度比較快;
首先頂部引用了
using System.IO;
using System.Xml;
#一個是為了實作接收xml檔案流,一個是為了後面對xml檔案的處理;
public class index : IHttpHandler { private readonly string Token = "xxxx";//与微信公众账号后台的Token设置保持一致,区分大小写。 public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; string signature = context.Request["signature"]; string timestamp = context.Request["timestamp"]; string nonce = context.Request["nonce"]; string echostr = context.Request["echostr"]; if (context.Request.HttpMethod == "GET") { if (CheckSign(signature, timestamp, nonce)) { context.Response.Output.Write(echostr); } } else { //post method - 当有用户想公众账号发送消息时触发,写事件 } context.Response.End(); }
首先設定好Token,接收各種參數,請求方式是以get的方式發送;
這裡主要呢是CheckSign()函數;
public bool CheckSign(string signature, string timestamp, string nonce) { string[] strs = new string[] { Token, timestamp, nonce }; Array.Sort(strs);//排序 string strNew = string.Join("", strs);//连接成字符串 strNew = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strNew, "SHA1");//加密 if (signature == strNew.ToLower()) return true; return false; }
其實這裡的意識就是接收到A/B/C/D,E為自訂,B/C/E生成F,與A比較,相等回傳輸出D;
string xmlFromWeChat = new StreamReader(context.Request.InputStream).ReadToEnd();//读取XML流 XmlDocument xmldocument = new XmlDocument(); xmldocument.LoadXml(xmlFromWeChat);加载字符串 string fromContent = xmldocument.GetElementsByTagName("Content").Item(0).InnerText; string fromMsgType = xmldocument.GetElementsByTagName("MsgType").Item(0).InnerText;
寫的不好指出哈! !
這樣我們就可以對接收到的資料進行判斷,做出對應的操作,最主要的還是要熟悉介面;
下面就一個例子說明一下,可能沒有抽象的很好:
public string receiveText(string xmlFromWeChat) { XmlDocument xmlText = new XmlDocument(); xmlText.LoadXml(xmlFromWeChat); string content; string xmlStr; string keyword = xmlText.GetElementsByTagName("Content").Item(0).InnerText.Trim(); content = "欢迎关注xxx!"; string[] defArray = { xmlText.GetElementsByTagName("FromUserName").Item(0).InnerText, xmlText.GetElementsByTagName("ToUserName").Item(0).InnerText, ConvertDateTimeInt(DateTime.Now).ToString(), content}; xmlStr = transmitText(defArray); } return xmlStr; }
public string transmitText(string[] xmlArray) { string xmlstring = @"<xml> <tousername></tousername> <fromusername></fromusername> <createtime>{2}</createtime> <msgtype></msgtype> <content></content> </xml>"; string xmlstr = string.Format(xmlstring, xmlArray); return xmlstr; }
這樣子就完成的一個簡單的回復了;
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
1 個月前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
1 個月前ByDDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前ByDDD
Inzoi:如何申請學校和大學
3 週前ByDDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具