基本信息
源码名称:多说-社会化评论系统 完整实例源码下载
源码大小:2.87M
文件格式:.zip
开发语言:C#
更新时间:2014-06-12
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
多说社会化评论系统 源码
多说社会化评论系统 源码
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 } }