国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 微信小程序 微信開發(fā) C#微信公眾號開發(fā)--微信事件交互

C#微信公眾號開發(fā)--微信事件交互

Jan 16, 2017 am 10:56 AM

前言

? ? ? 一切準備工作就緒時就先實現一個關注公眾號后向客戶端推送一條消息。關注后推送消息需要一個get請求、一個post請求,get請求主要是為了向微信服務器驗證,post請求主要就是處理微信消息了。 調接口時傳遞的appid和appsecret請傳遞自己公眾號對應的參數。

?

微信事件交互

? ? ? 微信事件交互主要是向微信服務器推送XML數據包

34.jpg

看效果

35.jpg

看代碼

[HttpGet][ActionName("Index")]
public ActionResult Get(string signature,string timestamp,string nonce,string echostr){    
if (CheckSignature.Check(signature, timestamp, nonce, token))    
{        
return Content(echostr);    
}    
else    
{       
return Content("err");    
}
}
[HttpPost][ActionName("Index")]
public ActionResult Get(string signature, string timestamp, string nonce){     
StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8);     
XmlDocument doc = new XmlDocument();     
doc.Load(sr);     
sr.Close();     
sr.Dispose();     
WxMessage wxMessage = new WxMessage();     
wxMessage.ToUserName = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;     
wxMessage.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;     
wxMessage.MsgType = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;     
wxMessage.CreateTime = int.Parse(doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText);     
if (wxMessage.MsgType == "event")     
{         
wxMessage.EventName = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;         
if (!string.IsNullOrEmpty(wxMessage.EventName) && wxMessage.EventName == "subscribe")         
{              
string content = "您好,歡迎訪問garfieldzf8測試公眾平臺";              
content = SendTextMessage(wxMessage, content);              
return Content(content);        
}    
}            
return Content("");}private string SendTextMessage(WxMessage wxmessage,string content){      
string result = string.Format(Message, wxmessage.FromUserName,wxmessage.ToUserName,DateTime.Now.Ticks, content);      
return result;} 
public string Message {     
get     
{         
return @"<xml>                      
<ToUserName><![CDATA[{0}]]></ToUserName>                      
<FromUserName><![CDATA[{1}]]></FromUserName>                      
<CreateTime>{2}</CreateTime>                      
<MsgType><![CDATA[text]]></MsgType>                      
<Content><![CDATA[{3}]]></Content>                 
</xml>";            
}    
}
public class WxMessage  
{        
public string ToUserName { get; set; }        
public string FromUserName { get; set; }        
public long CreateTime { get; set; }        
public string Content { get; set; }        
public string MsgType { get; set; }        
public string EventName { get; set; }        
public string EventKey { get; set; }   
}

總結

? ? ?開發(fā)微信接口的過程中不能調試,唯一排除問題的方式就是在關鍵的地方記log。

? ? ?微信事件交互主要是分析微信發(fā)送的xml數據包,解析xml,并按照消息指定格式拼接xml發(fā)送給response。在Get方法里用到的CheckSignature?是盛派微信SDK的一個類,也就是對簽名校驗。

? ? ?向客戶端發(fā)送消息時主要ToUserName和FromUserName。我一開始把兩個參數寫反了導致客戶端收不到消息。

以上就是C#微信公眾號開發(fā)--微信事件交互的內容,更多相關內容請關注PHP中文網(www.miracleart.cn)!


本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
c#多線程和異步的區(qū)別 c#多線程和異步的區(qū)別 Apr 03, 2025 pm 02:57 PM

多線程和異步的區(qū)別在于,多線程同時執(zhí)行多個線程,而異步在不阻塞當前線程的情況下執(zhí)行操作。多線程用于計算密集型任務,而異步用于用戶交互操作。多線程的優(yōu)勢是提高計算性能,異步的優(yōu)勢是不阻塞 UI 線程。選擇多線程還是異步取決于任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

C#與C:歷史,進化和未來前景 C#與C:歷史,進化和未來前景 Apr 19, 2025 am 12:07 AM

C#和C 的歷史與演變各有特色,未來前景也不同。1.C 由BjarneStroustrup在1983年發(fā)明,旨在將面向對象編程引入C語言,其演變歷程包括多次標準化,如C 11引入auto關鍵字和lambda表達式,C 20引入概念和協程,未來將專注于性能和系統級編程。2.C#由微軟在2000年發(fā)布,結合C 和Java的優(yōu)點,其演變注重簡潔性和生產力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注于開發(fā)者的生產力和云計算。

xml怎么轉換成json xml怎么轉換成json Apr 03, 2025 am 09:09 AM

將 XML 轉換為 JSON 的方法包括:使用編程語言(如 Python、Java、C#)編寫腳本或程序進行轉換;使用在線工具(如 XML 轉換為 JSON、Gojko's XML 轉換器、XML 在線工具)粘貼或上傳 XML 數據并選擇 JSON 格式輸出;使用 XML 到 JSON 轉換器(如 Oxygen XML Editor、Stylus Studio、Altova XMLSpy)執(zhí)行轉換任務;使用 XSLT 樣式表將 XML 轉換為 JSON;使用數據集成工具(如 Informatic

c#多線程編程是什么  c#多線程編程用處 c#多線程編程是什么 c#多線程編程用處 Apr 03, 2025 pm 02:45 PM

C# 多線程編程是一種讓程序同時執(zhí)行多項任務的技術,它可以通過提升性能、提高響應能力和實現并行處理來提高程序效率。雖然 Thread 類提供了直接創(chuàng)建線程的方法,但 Task 和 async/await 等高級工具可以提供更安全的異步操作和更簡潔的代碼結構。多線程編程中常見的難題包括死鎖、競態(tài)條件和資源泄漏,需要仔細設計線程模型和使用適當的同步機制來避免這些問題。

C#.NET:使用.NET生態(tài)系統構建應用程序 C#.NET:使用.NET生態(tài)系統構建應用程序 Apr 27, 2025 am 12:12 AM

如何利用.NET構建應用?使用.NET構建應用可以通過以下步驟實現:1)了解.NET基礎知識,包括C#語言和跨平臺開發(fā)支持;2)學習核心概念,如.NET生態(tài)系統的組件和工作原理;3)掌握基本和高級用法,從簡單控制臺應用到復雜的WebAPI和數據庫操作;4)熟悉常見錯誤與調試技巧,如配置和數據庫連接問題;5)應用性能優(yōu)化與最佳實踐,如異步編程和緩存。

從網絡到桌面:C#.NET的多功能性 從網絡到桌面:C#.NET的多功能性 Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

.NET框架與C#:解碼術語 .NET框架與C#:解碼術語 Apr 21, 2025 am 12:05 AM

.NETFramework是一個軟件框架,C#是一種編程語言。1..NETFramework提供庫和服務,支持桌面、Web和移動應用開發(fā)。2.C#設計用于.NETFramework,支持現代編程功能。3..NETFramework通過CLR管理代碼執(zhí)行,C#代碼編譯成IL后由CLR運行。4.使用.NETFramework可快速開發(fā)應用,C#提供如LINQ的高級功能。5.常見錯誤包括類型轉換和異步編程死鎖,調試需用VisualStudio工具。

c#多線程的好處有哪些 c#多線程的好處有哪些 Apr 03, 2025 pm 02:51 PM

多線程的好處在于能提升性能和資源利用率,尤其適用于處理大量數據或執(zhí)行耗時操作。它允許同時執(zhí)行多個任務,提高效率。然而,線程過多會導致性能下降,因此需要根據 CPU 核心數和任務特性謹慎選擇線程數。另外,多線程編程涉及死鎖和競態(tài)條件等挑戰(zhàn),需要使用同步機制解決,需要具備扎實的并發(fā)編程知識,權衡利弊并謹慎使用。

See all articles