/// <summary> /// 获取扫描的二维码参数值 /// </summary> /// <returns></returns> public string GetQrSceneValue() { return(EventKey?.Substring("qrscene_".Length)); }
public string Handle(HttpServerUtility Server, HttpRequest Request, HttpResponse Response) { string xml = Request.QueryString.Get("echostr"); if (!string.IsNullOrEmpty(xml)) { return(xml); } using (System.IO.Stream s = Request.InputStream) { byte[] buffer = new byte[s.Length]; StringBuilder builder = new StringBuilder(); s.Read(buffer, 0, (int)s.Length); xml = Encoding.UTF8.GetString(buffer); } if (string.IsNullOrEmpty(xml)) { return(""); } this.onData(xml); XmlDocument document = new XmlDocument(); document.LoadXml(xml); string user = document.SelectSingleNode("/xml/FromUserName").InnerText; string server = document.SelectSingleNode("/xml/ToUserName").InnerText; string EventType = document.SelectSingleNode("/xml/MsgType").InnerText; string MediaId, ThumbMediaId; string ret; try { switch (EventType) { case "text": return(makeXML(server, user)); case "image": return(makeXML(server, user)); case "voice": return(makeXML(server, user)); case "video": return(makeXML(server, user)); case "shortvideo": return(makeXML(server, user)); case "location": return(makeXML(server, user)); case "link": return(makeXML(server, user)); default: string Event = document.SelectSingleNode("/xml/Event").InnerText; string EventKey; switch (Event) { case "subscribe": EventKey = document.SelectSingleNode("/xml/EventKey").InnerText; ret = this.onSubscribe(server, user, string.IsNullOrEmpty(EventKey) ? null : EventKey.Substring(8)); break; case "unsubscribe": this.unSubscribe(server, user); return(""); case "SCAN": EventKey = document.SelectSingleNode("/xml/EventKey").InnerText; ret = this.onScan(server, user, EventKey); break; case "CLICK": EventKey = document.SelectSingleNode("/xml/EventKey").InnerText; ret = this.onClick(server, user, EventKey); break; case "VIEW": EventKey = document.SelectSingleNode("/xml/EventKey").InnerText; ret = this.onView(server, user, EventKey); break; case "LOCATION": string Latitude = document.SelectSingleNode("/xml/Latitude").InnerText; string Longitude = document.SelectSingleNode("/xml/Longitude").InnerText; string Precision = document.SelectSingleNode("/xml/Precision").InnerText; ret = this.onAutoLocation(server, user, Latitude, Longitude, Precision); break; default: ret = this.onUnhandle(server, user, EventType, document); break; } break; } } catch (Exception ex) { ret = onError(ex); } return(makeResponse(server, user, ret)); }