微信开发 消息推送实现代码
最近做微信公共号的开发,有个需求是这样的消息推送,以文本的形式把编辑的消息发送给微信企业号中的某一个应用组,这里做下笔记,以下是整理内容:
//定义数据模型
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;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!