C# 构造post参数一种看起来直观点的方法
来源:互联网 发布:手机维修记账软件 编辑:程序博客网 时间:2024/06/06 05:01
因为本人经常爱用C#做一些爬虫类的小东西,每次构造post参数的时候,都是直接字符串拼接的方式的,有时候改起来不太方便。
场景:
需要post一个地址
参数列表 :
username:管理员
password:123456
xxx:xxx
我想大部分人可能会这样写
string username = "管理员";string password = "123456";string xxx = "xxx";string postdata = string.Format("username={0}&password={1}&xxx={2}", username, password, xxx);
直接用字符串来拼接的,这样写是最直接的,我一直都是这样写,然后到后来,比如参数十几二十个的时候,不知道{7}跟{8}是谁,甚至有时候password手滑打成了pasword
碰到这些情况很蛋疼,因为这样并不怎么直观。
然后我想到了下面的方法
首先是定义了一个静态方法,方便调用,注意参数类型
此方法2.0版本以上都是支持的。
public static string CreatePostData(Dictionary<string, string> PostParameters){ string postdata = string.Empty; foreach (var item in PostParameters) { if (postdata != string.Empty) postdata += "&"; postdata += item.Key + "=" + item.Value; } return postdata;}
然后还有Linq版的,需要3.5版本以上不罗嗦
public static string CreatePostData(Dictionary<string, string> PostParameters){ var query = from s in PostParameters select s.Key + "=" + s.Value; string[] parameters = query.ToArray<string>(); return string.Join("&", parameters);}
Dictionary<string, string> parameters = new Dictionary<string, string>();parameters.Add("username", "管理员");parameters.Add("password", "123456");parameters.Add("xxx", "xxx");string postdata = CreatePostData(parameters);
因为post参数是键值对应的,这里用字典的形式来表示出来,我个人感觉应该是蛮直观了,以后需要修改哪个参数,直接定位
代码运行结果:
当然,有时候我们POST参数包含中文啊或者一些敏感字符,就需要进行urlencode了,下面是方法
//此方法需要添加System.Web引用 程序集:System.Web(在 system.web.dll 中)//参数IsEncode 默认为 false 表示不需要转码,需要转码的时候指定参数为True即可public static string CreatePostData(Dictionary<string, string> PostParameters,bool IsEncode = false){ var query = from s in PostParameters select s.Key + "=" + (IsEncode ? System.Web.HttpUtility.UrlEncode(s.Value) : s.Value); string[] parameters = query.ToArray<string>(); return string.Join("&", parameters);}
Dictionary<string, string> parameters = new Dictionary<string, string>();parameters.Add("username", "管理员");parameters.Add("password", "123456");parameters.Add("xxx", "xxx");string postdata = CreatePostData(parameters,true);
代码运行结果:
到这里应该差不多了,有什么不对的地方希望各位能指正出来。
0 0
- C# 构造post参数一种看起来直观点的方法
- 关于C#静态构造方法的几点说明
- BP 算法的一种直观的解释
- 一种比较直观的分布式架构方案
- 一种对拉格朗日乘子的直观理解
- BP 算法之一种直观的解释
- BP 算法之一种直观的解释
- 关于Lucas定理的一种直观证明
- 二叉搜索树的一种构造方法
- handler.post方法的终极最直观的理解与解释
- handler.post方法的终极最直观的理解与解释
- 一种构造组合方法以及bind的一种用法
- c# get post 的方法
- Python post中文参数传递出错的一种解决办法
- C#构造函数的一些注意点
- C#基础加强--this 的用法(重载构造方法,设置构造方法中参数的默认值)
- C#方法的参数
- 一种注入进程,获得完全操控的方法之一[先贴过来,等下研究一下,看起来不错]
- 【leetcode】Gas Station
- 对于内存结构的理解(应该能加深对汇编或者系统内核理解)
- HTTP协议
- 参数估计:最大似然估计、贝叶斯估计与最大后验估计
- 主扳不识别大容量硬盘怎么办_安装双硬盘盘符交错怎么办
- C# 构造post参数一种看起来直观点的方法
- 设计模式:模版模式(Template Pattern)
- 我的中文问题
- 第一次用自己学的Java解决实际问题,纪念一下!设计i/o,File的知识!
- 嵌入式之Linux的LCD背光调节及驱动的工作原理
- Vim配置(一)
- oprofile在arm64体系结构下
- 类的加载二
- 【Android】init -> Zygote(app_main) -> SystemServer(SystemServer.main)/AppProcess(ActivityThread.main)