這幾天有點空,做了個Android App后,想着對接一下公司的微信平台,以便讓客戶更方便查詢,在研究微信平台中,要注意以下幾點:
1、微信驗證消息真實性是用Get方式到你提交的url
2、用戶發送的消息、事件等都是通過Post方式提交過來
3、微信服務器端發送過來的,是xml格式,通過HttpRequest.InputStream獲取
4、在處理用戶消息的時候,如果你要返回信息的話,您只要輸出xml格式的字符串就可以了。
如何讀取微信客戶端信息:
var stream = Request.InputStream; var reader = XmlReader.Create(stream); var doc = XDocument.Load(reader);
我把消息流轉換成XDocument,方便操作,返回的時候我也用了比較偷懶的辦法:
>var resultDoc = new XDocument(); var root = new XElement("xml", new XElement(), new XElement()); resultDoc.add(root); Response.Write(resultDoc.ToString());
獲取用戶發送的消息:
>doc.Element("xml").Element("Content");
通過分析用戶發送的內容,我們可以做很多事情,大家也可以參考下博客園大咖:"方倍工作室"
在開發中,發覺幾個問題:
1、在“驗證消息真實性”驗證中,無需返回什么特殊的比對結果,只要返回“echostr”就代表驗證通過
2、對收到的消息、事件等,都沒有明確的Action,僅單單靠Post方式發送到指定的Url
3、創建的時間參數,在文檔中只寫明了整形,沒有提到這個整形與時間的對應,難道是TICK?
也不是說以上方式存在什么問題,但在處理收到的消息的時候,沒有讓我進行任何判斷的地方,這是很頭大的事情。還有微信對自己服務器很有信心,沒把dns劫持考慮進來,每次消息的反饋不需要我進行任何驗證返回,這點淘寶平台還是不錯的。還有微信的文檔,着實難懂,一眼看來,覺得是自己寫給自己看的文檔,汗!
公司微信公眾平台賬號:sh_bus
測試數據:發送消息:4660+13701111111