ASP.net常用代码(持续更新)
来源:互联网 发布:软件锁哪个好 编辑:程序博客网 时间:2024/05/17 23:12
每次写代码都要东拼西找,希望把些简单的代码块放在一起,用的时候方便查看,仅作备份,并持续更新。
HttpPost请求
指定一个url和请求参数,进行post请求:
public static string httpPost(string url, string body) { Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/json"; byte[] buffer = encoding.GetBytes(body); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); } }
其中body的格式为:
{_PrincipalName:"1000003541@chinaexpressair.com",_Count:"10"}
把请求参数字典转换成body的函数:
public static string toRequestBody(IDictionary<string, string> requestDic) { StringBuilder ret = new StringBuilder(); if (0 == requestDic.Count) { return ret.ToString(); } StringBuilder tempItem = new StringBuilder(); ret.Append("{"); foreach (var item in requestDic) { tempItem.Append(item.Key).Append(":\"").Append(item.Value).Append("\","); ret.Append(tempItem); tempItem.Clear(); } int endIndex = ret.ToString().LastIndexOf(','); ret.Remove(ret.ToString().LastIndexOf(','),1); //ret.Replace(,); ret.Append("}"); return ret.ToString(); }
调用示例:
IDictionary<string, string> body = new Dictionary<string, string>(); body.Add("_PrincipalName", principalName); body.Add("_Count", count); var bodyStr = RequestHelper.toRequestBody(body); string mailList = RequestHelper.httpPost(getMailUrl, bodyStr);
JSON帮助类
public class JsonHelper { public static HttpResponseMessage SerializeObjectToHttp(object o) { string json = JsonConvert.SerializeObject(o); return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") }; } /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对象</param> /// <returns>json字符串</returns> public static string SerializeObject(object o) { string json = JsonConvert.SerializeObject(o); return json; } /// <summary> /// json 转换为object /// </summary> /// <param name="json"></param> /// <returns></returns> public static object DeserializeObject(string json) { return JsonConvert.DeserializeObject(json); } /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对象</param> /// <returns>json字符串</returns> public static string SerializeDatatable(DataTable dt) { //string json = JsonConvert.SerializeObject(dt, new DataTableConverter()); //return json; StringBuilder JsonString = new StringBuilder(); //Exception Handling if (dt != null && dt.Rows.Count > 0) { JsonString.Append("[ "); for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{ "); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\","); } else if (j == dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\""); } } /*end Of String*/ if (i == dt.Rows.Count - 1) { JsonString.Append("} "); } else { JsonString.Append("}, "); } } JsonString.Append("]"); return JsonString.ToString(); } else { return null; } } /// <summary> /// 解析JSON字符串生成对象实体 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param> /// <returns>对象实体</returns> public static T DeserializeJsonToObject<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T)); T t = o as T; return t; } /// <summary> /// 解析JSON数组生成对象实体集合 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param> /// <returns>对象实体集合</returns> public static List<T> DeserializeJsonToList<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>)); List<T> list = o as List<T>; return list; } /// <summary> /// 反序列化JSON到给定的匿名对象. /// </summary> /// <typeparam name="T">匿名对象类型</typeparam> /// <param name="json">json字符串</param> /// <param name="anonymousTypeObject">匿名对象</param> /// <returns>匿名对象</returns> public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject) { T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject); return t; } #region dataTable转换成Json格式 /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string DataTableToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\""); jsonBuilder.Append(dt.TableName.ToString()); jsonBuilder.Append("\":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } #endregion dataTable转换成Json格式 #region DataSet转换成Json格式 /// <summary> /// DataSet转换成Json格式 /// </summary> /// <param name="ds">DataSet</param> /// <returns></returns> public static string DataSetToJson(DataSet ds) { StringBuilder json = new StringBuilder(); foreach (DataTable dt in ds.Tables) { json.Append("{\""); json.Append(dt.TableName); json.Append("\":"); json.Append(DataTableToJson(dt)); json.Append("}"); } return json.ToString(); } #endregion }
扩展方法
Distinct扩展
项目中有时要对一个list去重,看到一个很优雅的方法:
public class CommonEqualityComparer<T, V> : IEqualityComparer<T> { private Func<T, V> keySelector; public CommonEqualityComparer(Func<T, V> keySelector) { this.keySelector = keySelector; } public bool Equals(T x, T y) { return EqualityComparer<V>.Default.Equals(keySelector(x), keySelector(y)); } public int GetHashCode(T obj) { return EqualityComparer<V>.Default.GetHashCode(keySelector(obj)); } } public static class DistinctExtensions { public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector) { return source.Distinct(new CommonEqualityComparer<T, V>(keySelector)); } }
使用示例:
去掉ID值重复的列表
userList = userList.Distinct(u => u.ID).ToList();
阅读全文
0 0
- ASP.net常用代码(持续更新)
- 慢慢总结一点asp.net比较常用的代码(持续更新,有好的代码可以留言)
- asp.net 一点一滴(持续更新中......)
- 常用JavaScript代码(持续更新)
- processing 常用代码片段(持续更新)
- iOS 常用代码汇总(持续更新)
- 开发中常用代码片段汇总(持续更新)
- 常用JavaScript代码(持续更新) 续1
- 常用JavaScript代码(持续更新) 续2
- 前台设计——常用HTML代码(持续更新)
- ASP.Net 常用缓存更新(转)
- asp.net学习资源汇总 ( 持续更新 )
- 小技巧 ASP.NET 持续更新中
- asp.net连接数据持续更新中。
- 常用代码笔记-持续更新
- 最常用JavaScript代码(持续更新,精益求精)
- Qt常用片段代码库(持续更新)
- iOS开发常用代码【持续更新中】
- LXR_CHNGroup自定义分组与系统通讯录分组
- leetcode_SortList
- Unity手游制作记-制作通用输入管理器
- 错误解决: java.lang.SecurityException: Permission Denial
- 打开第三方应用
- ASP.net常用代码(持续更新)
- JAVA企业面试题精选 数据库11-20
- Unity手游制作记-通用输入管理器-测试案例
- HenCoder Android开发进阶系列学习笔记
- Spring-基于注解的配置[03Bean作用范围和生命周期方法]
- pxe自动安装及部署简介
- 软路由ROS应用系列之-----禁内外ping、禁DDOS
- webservice接口测试,使用SoapUI工具进行接口测试
- Postman功能使用说明