实例介绍
【实例简介】多说社会化评论系统 源码
【实例截图】
【实例截图】
【核心代码】
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Web; namespace DuoShuo.SDK.Partial { /// <summary> /// 多说POST请求的帮助类,主要解释了array参数的拼接格式和JWT的设置 /// </summary> /// <author> /// Parry /// Mail: qiupengyuan@gmail.com /// Blog: http://www.cnblogs.com/parry /// </author> public class DuoShuoHelper { #region POST数据 /// <summary> /// POST数据到多说的API接口 /// </summary> /// <summary>http://dev.duoshuo.com/docs/51435552047fe92f490225de</summary> /// <param name="apiUrl">接口的URL,如http://api.duoshuo.com/users/import.json</param> /// <param name="prePostData">不包含array参数的前置数据,类似:short_name=当前站点注册的多说二级域名&secret=站点多说密钥</param> /// <param name="arrayName">array形式的参数的名称,如users</param> /// <param name="arrayPostData">array形式的参数数据</param> /// <returns>接口返回的字符串</returns> /// <example> /// 注意array参数,在.NET下可以使用HashTable或者Dictionary实现 /// 如: /// Dictionary<string, object> arrayPostData = new Dictionary<string, object>(); /// arrayPostData.Add("user_key", 1); /// arrayPostData.Add("name", "Parry"); /// arrayPostData.Add("role", "user"); /// arrayPostData.Add("avatar_url", ""); /// arrayPostData.Add("url", ""); /// arrayPostData.Add("email", ""); /// arrayPostData.Add("created_at", DateTime.Now.ToString("yyyy-mm-dd hh:MM:ss")); /// </example> /// <remarks>注意:此方法只处理了一个arrayPostData的情况,多个数组的形式请自行修改</remarks> public string HttpPostData(string apiUrl, string prePostData, string arrayName, Dictionary<string, object> arrayPostData) { var webRequest = WebRequest.Create(apiUrl) as HttpWebRequest; if (webRequest != null) { webRequest.Method = "post"; webRequest.ContentType = "application/x-www-form-urlencoded"; //postData赋值 var postData = prePostData "&" string.Join("&", arrayPostData.Select(keyValuePair => string.Format("{0}[0][{1}]={2}", arrayName, keyValuePair.Key, keyValuePair.Value)).ToArray()); ////使用非LINQ实现postData赋值 //var listJoinArrayParamemter = new List<string>(); //foreach (KeyValuePair<string, object> keyValuePair in arrayPostData) //{ // listJoinArrayParamemter.Add(string.Format("users[0][{0}]={1}", keyValuePair.Key, keyValuePair.Value)); //} //var postData = prePostData "&" string.Join("&", listJoinArrayParamemter.ToArray()); using (var sw = new StreamWriter(webRequest.GetRequestStream())) { sw.Write(postData); } using (var response = webRequest.GetResponse()) { var stream = response.GetResponseStream(); if (stream == null) return string.Empty; using (var sr = new StreamReader(stream)) { return sr.ReadToEnd(); } } } return string.Empty; } #endregion #region 多说本地身份说明(JWT) /// <summary> /// 设置多说本地身份说明(JWT) /// </summary> /// <summary>http://dev.duoshuo.com/docs/501e6ce1cff715f71800000d</summary> /// <param name="secretKey">站点多说密钥</param> /// <param name="shortName">当前站点注册的多说二级域名</param> /// <param name="userKey">用户在当前站点中对应的唯一标示,通常是用户ID</param> /// <param name="name">用户在当前网站的用户名</param> public void SetLocalJwt(string secretKey, string shortName, string userKey, string name) { var array = new Dictionary<string, object> { {"short_name", shortName}, {"user_key", userKey}, {"name", name} }; string token = JsonWebToken.Encode(array, secretKey, JwtHashAlgorithm.HS256); //cookie设置了一年过期 var cookie = new HttpCookie("duoshuo_token") { Value = token, Expires = DateTime.Now.AddDays(365) }; HttpContext.Current.Response.Cookies.Add(cookie); } #endregion } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论