C\#위 챗 공중 번호 개발 위 챗 이벤트 상호작용

3994 단어 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 입 니 다.나 는 처음에 두 개의 인 자 를 거꾸로 써 서 클 라 이언 트 가 메 시 지 를 받 지 못 했다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기