C\#위 챗 공중 번호 개발 위 챗 이벤트 상호작용
모든 준비 작업 이 다 되 었 을 때 먼저 대중 번호 에 관심 을 가 진 후에 클 라 이언 트 에 게 메 시 지 를 보 냅 니 다.후 푸 시 메 시 지 를 주목 하려 면 get 요청,post 요청 이 필요 합 니 다.get 요청 은 주로 위 챗 서버 에 검증 하기 위해 서 입 니 다.post 요청 은 주로 위 챗 메 시 지 를 처리 하 는 것 입 니 다.인 터 페 이 스 를 바 꿀 때 전달 하 는 appid 와 appsick 은 자신의 공중 번호 에 대응 하 는 인 자 를 전달 하 십시오.
위 챗 이벤트 상호작용
위 챗 이벤트 인 터 랙 션 은 주로 위 챗 서버 에 XML 패 킷 을 푸 시 합 니 다.
효 과 를 보다
코드 보기
[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; }
}
총결산위 챗 인 터 페 이 스 를 개발 하 는 과정 에서 디 버 깅 을 할 수 없 으 며,문 제 를 제거 하 는 유일한 방법 은 관건 적 인 곳 에 log 를 기록 하 는 것 이다.
위 챗 이벤트 의 상호작용 은 주로 위 챗 이 보 낸 xml 패 킷 을 분석 하고 xml 를 분석 하 며 메시지 지정 형식 에 따라 xml 을 연결 하여 response 에 보 냅 니 다.Get 방법 에 사용 되 는 CheckSignature 는 성 파 위 챗 SDK 의 한 종류 로 서명 검사 입 니 다.
클 라 이언 트 에 메 시 지 를 보 낼 때 주로 ToUserName 과 FromUserName 입 니 다.나 는 처음에 두 개의 인 자 를 거꾸로 써 서 클 라 이언 트 가 메 시 지 를 받 지 못 했다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.