欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信開(kāi)發(fā) 消息推送實(shí)現(xiàn)代碼

 更新時(shí)間:2016年10月21日 16:19:01   投稿:lqh  
這篇文章主要介紹了微信開(kāi)發(fā) 消息推送實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下

最近做微信公共號(hào)的開(kāi)發(fā),有個(gè)需求是這樣的消息推送,以文本的形式把編輯的消息發(fā)送給微信企業(yè)號(hào)中的某一個(gè)應(yīng)用組,這里做下筆記,以下是整理內(nèi)容:

//定義數(shù)據(jù)模型
 
public class Access_token
{
public Access_token()
{
//
// TODO: 在此處添加構(gòu)造函數(shù)邏輯
//
}
string _access_token;
string _expires_in;
 
///
 
 
/// 獲取到的憑證
///
 
public string access_token
{
get { return _access_token; }
set { _access_token = value; }
}
 
 
///
 
 
/// 憑證有效時(shí)間,單位:秒
///
 
public string expires_in
{
get { return _expires_in; }
 
 
set { _expires_in = value; }
}
 
}
 public ActionResult index(string returnUrl)
{
 
GetAccess_token();
 
IsExistAccess_Token();
 
return View();
}
 
 
 
public static Access_token GetAccess_token()
{
string AppUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?";
string AppID = "應(yīng)用組的CorpID";//在設(shè)置-》權(quán)限管理-》系統(tǒng)管理組
string AppSecret = "應(yīng)用組的Secret";//在設(shè)置-》權(quán)限管理-》系統(tǒng)管理組
WebClient webClient = new WebClient();
Byte[] bytes = webClient.DownloadData(string.Format("{0}corpid={1}&corpsecret={2}", AppUrl, AppID, AppSecret));
string result = Encoding.GetEncoding("utf-8").GetString(bytes);
JObject jObj = JObject.Parse(result);
 
string token = jObj["access_token"].ToString();
string expires_in = jObj["expires_in"].ToString();
 
Access_token mode = new Access_token();
mode.access_token = token;
mode.expires_in = expires_in;
return mode;
}
 
///
 

根據(jù)當(dāng)前日期 判斷Access_Token 是否超期 如果超期返回新的Access_Token 否則返回之前的Access_Token

public static string IsExistAccess_Token()
{
string Token = string.Empty;
DateTime YouXRQ;
string strPath = "../../weixin/XMLFile.xml";
// 讀取XML文件中的數(shù)據(jù),并顯示出來(lái)
//string filepath = System.Web.Hosting.HostingEnvironment.MapPath(strPath);
string filepath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
 
StreamReader str = new StreamReader(filepath, System.Text.Encoding.UTF8);
XmlDocument xml = new XmlDocument();
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_token mode = 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;
}
 
object text = new
{
toparty = "1",
agentid = "2",
msgtype = "text",
text = new
{
content = "項(xiàng)目名稱:"+來(lái)保網(wǎng)+""
}
};
 
string wcr= btnSend(Token, text);
return wcr;
 
}
public static string btnSend(string Token, object text)
{
 
string url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + Token;
WebRequest req = WebRequest.Create(url);
JavaScriptSerializer aa = new JavaScriptSerializer();
string postData = aa.Serialize(text);
byte[] requestBytes = Encoding.UTF8.GetBytes(postData);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = requestBytes.Length;
 
Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.Default);
string backstr = sr.ReadToEnd();
sr.Close();
res.Close();
WeChatReturn WCR = aa.Deserialize(backstr);
return WCR.errmsg;
 
}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • javascript實(shí)現(xiàn)2016新年版日歷

    javascript實(shí)現(xiàn)2016新年版日歷

    這篇文章主要為大家介紹了javascript實(shí)現(xiàn)2016新年版日歷的詳細(xì)代碼,感興趣的小伙伴們可以參考一下
    2016-01-01
  • jQuery與原生JavaScript選擇HTML元素集合用法對(duì)比分析

    jQuery與原生JavaScript選擇HTML元素集合用法對(duì)比分析

    這篇文章主要介紹了jQuery與原生JavaScript選擇HTML元素集合用法,結(jié)合實(shí)例形式對(duì)比分析了jquery與原生JavaScript選擇頁(yè)面HTML相關(guān)操作方法、注意事項(xiàng)及運(yùn)行效率,需要的朋友可以參考下
    2019-11-11
  • js形成頁(yè)面的一種遮罩效果實(shí)例代碼

    js形成頁(yè)面的一種遮罩效果實(shí)例代碼

    這篇文章主要介紹了js形成頁(yè)面的一種遮罩效果實(shí)例代碼,有需要的朋友可以參考一下
    2014-01-01
  • js 事件處理函數(shù)間的Event物件是否全等

    js 事件處理函數(shù)間的Event物件是否全等

    在非IE,事件對(duì)象Propagation之間的處理函數(shù),或同dom節(jié)點(diǎn)觸發(fā)的多個(gè)函數(shù)之間的Event物件是全等的。與綁定形式[addEventListener/DOM0]無(wú)關(guān)。
    2011-04-04
  • JS實(shí)現(xiàn)給對(duì)象動(dòng)態(tài)添加屬性的方法

    JS實(shí)現(xiàn)給對(duì)象動(dòng)態(tài)添加屬性的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)給對(duì)象動(dòng)態(tài)添加屬性的方法,涉及JS屬性的遍歷、動(dòng)態(tài)賦值及eval方法的簡(jiǎn)單使用技巧,需要的朋友可以參考下
    2017-01-01
  • js實(shí)現(xiàn)String.Fomat的實(shí)例代碼

    js實(shí)現(xiàn)String.Fomat的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)String.Fomat的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • 談?wù)凧S中常遇到的瀏覽器兼容問(wèn)題和解決方法

    談?wù)凧S中常遇到的瀏覽器兼容問(wèn)題和解決方法

    這篇文章主要介紹了談?wù)凧S中常遇到的瀏覽器兼容問(wèn)題和解決方法 ,有些代碼在某些瀏覽器的某些版本中表現(xiàn)出不兼容,影響頁(yè)面的體驗(yàn);這時(shí)就需要處理了這些兼容問(wèn)題,讓頁(yè)面在多個(gè)版本的瀏覽器上運(yùn)行良好。
    2016-12-12
  • JS實(shí)現(xiàn)碰撞檢測(cè)的方法分析

    JS實(shí)現(xiàn)碰撞檢測(cè)的方法分析

    這篇文章主要介紹了JS實(shí)現(xiàn)碰撞檢測(cè)的方法,結(jié)合實(shí)例形式分析了javascript碰撞檢測(cè)的原理與相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 20分鐘輕松創(chuàng)建自己的Bootstrap站點(diǎn)

    20分鐘輕松創(chuàng)建自己的Bootstrap站點(diǎn)

    這篇文章主要教大家如何在短短的20分鐘內(nèi)輕松創(chuàng)建自己的Bootstrap站點(diǎn),學(xué)會(huì)使用twitter bootstrap建立一個(gè)站點(diǎn),從而鞏固Bootstrap一系列基礎(chǔ)知識(shí),感興趣的小伙伴們可以參考一下
    2016-05-05
  • js獲取瀏覽器的各種屬性

    js獲取瀏覽器的各種屬性

    本篇文章主要介紹了js獲取瀏覽器各種屬性的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04

最新評(píng)論