微信开发 消息推送实现代码
最近做微信公共号的开发,有个需求是这样的消息推送,以文本的形式把编辑的消息发送给微信企业号中的某一个应用组,这里做下笔记,以下是整理内容:
//定义数据模型 publicclassAccess_token { publicAccess_token() { // //TODO:在此处添加构造函数逻辑 // } string_access_token; string_expires_in; /// ///获取到的凭证 /// publicstringaccess_token { get{return_access_token;} set{_access_token=value;} } /// ///凭证有效时间,单位:秒 /// publicstringexpires_in { get{return_expires_in;} set{_expires_in=value;} } }
publicActionResultindex(stringreturnUrl) { GetAccess_token(); IsExistAccess_Token(); returnView(); } publicstaticAccess_tokenGetAccess_token() { stringAppUrl="https://qyapi.weixin.qq.com/cgi-bin/gettoken?"; stringAppID="应用组的CorpID";//在设置-》权限管理-》系统管理组 stringAppSecret="应用组的Secret";//在设置-》权限管理-》系统管理组 WebClientwebClient=newWebClient(); Byte[]bytes=webClient.DownloadData(string.Format("{0}corpid={1}&corpsecret={2}",AppUrl,AppID,AppSecret)); stringresult=Encoding.GetEncoding("utf-8").GetString(bytes); JObjectjObj=JObject.Parse(result); stringtoken=jObj["access_token"].ToString(); stringexpires_in=jObj["expires_in"].ToString(); Access_tokenmode=newAccess_token(); mode.access_token=token; mode.expires_in=expires_in; returnmode; } ///
根据当前日期判断Access_Token是否超期如果超期返回新的Access_Token否则返回之前的Access_Token
publicstaticstringIsExistAccess_Token() { stringToken=string.Empty; DateTimeYouXRQ; stringstrPath="../../weixin/XMLFile.xml"; //读取XML文件中的数据,并显示出来 //stringfilepath=System.Web.Hosting.HostingEnvironment.MapPath(strPath); stringfilepath=System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,strPath); StreamReaderstr=newStreamReader(filepath,System.Text.Encoding.UTF8); XmlDocumentxml=newXmlDocument(); xml.Load(str); str.Close(); str.Dispose(); Token=xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText; YouXRQ=Convert.ToDateTime(xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText); if(DateTime.Now>YouXRQ) { DateTime_youxrq=DateTime.Now; Access_tokenmode=GetAccess_token(); xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText=mode.access_token; _youxrq=_youxrq.AddSeconds(int.Parse(mode.expires_in)); xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText=_youxrq.ToString(); xml.Save(filepath); Token=mode.access_token; } objecttext=new { toparty="1", agentid="2", msgtype="text", text=new { content="项目名称:"+来保网+"" } }; stringwcr=btnSend(Token,text); returnwcr; } publicstaticstringbtnSend(stringToken,objecttext) { stringurl="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+Token; WebRequestreq=WebRequest.Create(url); JavaScriptSerializeraa=newJavaScriptSerializer(); stringpostData=aa.Serialize(text); byte[]requestBytes=Encoding.UTF8.GetBytes(postData); req.Method="POST"; req.ContentType="application/x-www-form-urlencoded"; req.ContentLength=requestBytes.Length; StreamrequestStream=req.GetRequestStream(); requestStream.Write(requestBytes,0,requestBytes.Length); requestStream.Close(); HttpWebResponseres=(HttpWebResponse)req.GetResponse(); StreamReadersr=newStreamReader(res.GetResponseStream(),Encoding.Default); stringbackstr=sr.ReadToEnd(); sr.Close(); res.Close(); WeChatReturnWCR=aa.Deserialize(backstr); returnWCR.errmsg; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!