static int _timeout = 100000;#region CUP Method/// <summary>/// 请求与响应的超时时间/// </summary>static public int Timeout{get { return _timeout; }set { _timeout = value; }}/// <summary>/// 执行HTTP POST请求。/// </summary>/// <param name="url">请求地址</param>/// <param name="parameters">请求参数</param>/// <returns>HTTP响应</returns>static public string DoPost(string url, IDictionary<string, string> parameters){string result = string.Empty;try{HttpWebRequest req = GetWebRequest(url, "POST");NetworkCredential proxyCredential = new NetworkCredential();proxyCredential.UserName = proxyUserName;proxyCredential.Password = proxyPassword;req.Credentials = proxyCredential;WebProxy proxy = new WebProxy(proxyIpAddress);proxy.Credentials = proxyCredential;req.Proxy = proxy;var httpClientHandler = new HttpClientHandler(){Proxy = proxy,};httpClientHandler.PreAuthenticate = true;httpClientHandler.UseDefaultCredentials = false;httpClientHandler.Credentials = proxyCredential;var client = new HttpClient(handler: httpClientHandler, disposeHandler: true);var res = client.GetStringAsync(url).Result;req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters));Stream reqStream = req.GetRequestStream();reqStream.Write(postData, 0, postData.Length);reqStream.Close();HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);result = GetResponseAsString(rsp, encoding);}catch (Exception ex){result = string.Format("Request exception:{0}, please try again later.", ex.Message);}return result;}/// <summary>/// 执行HTTP GET请求。/// </summary>/// <param name="url">请求地址</param>/// <param name="parameters">请求参数</param>/// <returns>HTTP响应</returns>static public string DoGet(string url, IDictionary<string, string> parameters){string result = string.Empty;try{if (parameters != null && parameters.Count > 0){if (url.Contains("?")){url = url + "&" + BuildQuery(parameters);}else{url = url + "?" + BuildQuery(parameters);}}HttpWebRequest req = GetWebRequest(url, "GET");req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);result = GetResponseAsString(rsp, encoding);}catch (Exception ex){result = string.Format("Request exception:{0}, please try again later.", ex.Message);}return result;}static public HttpWebRequest GetWebRequest(string url, string method){HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);req.ServicePoint.Expect100Continue = false;req.Method = method;req.KeepAlive = true;//req.UserAgent = "Aop4Net";req.Timeout = _timeout;return req;}/// <summary>/// 把响应流转换为文本。/// </summary>/// <param name="rsp">响应流对象</param>/// <param name="encoding">编码方式</param>/// <returns>响应文本</returns>static public string GetResponseAsString(HttpWebResponse rsp, Encoding encoding){StringBuilder result = new StringBuilder();Stream stream = null;StreamReader reader = null;try{// 以字符流的方式读取HTTP响应stream = rsp.GetResponseStream();reader = new StreamReader(stream, encoding);// 按字符读取并写入字符串缓冲int ch = -1;while ((ch = reader.Read()) > -1){// 过滤结束符char c = (char)ch;if (c != '\0'){result.Append(c);}}}finally{// 释放资源if (reader != null) reader.Close();if (stream != null) stream.Close();if (rsp != null) rsp.Close();}return result.ToString();}/// <summary>/// 组装普通文本请求参数用于post请求/// </summary>/// <param name="parameters">Key-Value形式请求参数字典</param>/// <returns>URL编码后的请求数据</returns>static public string BuildQuery(IDictionary<string, string> parameters){StringBuilder postData = new StringBuilder();bool hasParam = false;IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();while (dem.MoveNext()){string name = dem.Current.Key;string value = dem.Current.Value;// 忽略参数名或参数值为空的参数if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value)){if (hasParam){postData.Append("&");}postData.Append(name);postData.Append("=");postData.Append(Uri.EscapeDataString(value));hasParam = true;}}return postData.ToString();}#endregion

View Code

        #region Parse Dictionary#region Dictionary Parse To String/// <summary>/// Dictionary Parse To String/// </summary>/// <param name="parameters">Dictionary</param>/// <returns>String</returns>static public string ParseToString(IDictionary<string, string> parameters){IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters);IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();StringBuilder query = new StringBuilder("");while (dem.MoveNext()){string key = dem.Current.Key;string value = dem.Current.Value;if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value)){query.Append(key).Append("=").Append(value).Append("&");}}string content = query.ToString().Substring(0, query.Length - 1);return content;}#endregion#region String Parse To Dictionary/// <summary>/// String Parse To Dictionary/// </summary>/// <param name="parameter">String</param>/// <returns>Dictionary</returns>static public Dictionary<string, string> ParseToDictionary(string parameter){try{String[] dataArry = parameter.Split('&');Dictionary<string, string> dataDic = new Dictionary<string, string>();for (int i = 0; i <= dataArry.Length - 1; i++){String dataParm = dataArry[i];int dIndex = dataParm.IndexOf("=");if (dIndex != -1){String key = dataParm.Substring(0, dIndex);String value = dataParm.Substring(dIndex + 1, dataParm.Length - dIndex - 1);dataDic.Add(key, value);}}return dataDic;}catch{return null;}}#endregion#endregion

View Code

KeyValuePairstring, string相关推荐

  1. Java知识——精华总结

    Java知识--精华总结 一.java概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 为了使计算机能够理解人的意图,人类就必须 ...

  2. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  3. Go 学习笔记(60)— Go 第三方库之 go-redis(初始化 redis、操作 string、操作 list、操作 set、操作 hset)

    1. 第三方库 go-redis 因为 Go 标准库中是没提供 redis 的库,所以我们选择用 go-redis 这个第三方库.源码地址为 https://github.com/go-redis/r ...

  4. Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)

    字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...

  5. python中的raw string的使用

    背景 我们经常需要使用raw string,在应用过程中,比如要使字符串中带一些转义字符或者其他的一些符号,我们就需要保持我们的字符成为raw string. 实例 输入 s = 'fadfafa\n ...

  6. Java中如何实现Date与String之间的数据类型转换

    String 数据类型转换成 Date String inputDate = "2021-04-11";Date outputDate = null;SimpleDateForma ...

  7. C++ string字符串的比较是否相等

    C++ string字符串的比较是否相等 可以使用compare 也可以使用"==" 1 使用比较运算符 == #include <iostream> #include ...

  8. python string 转bytes 以及bytes 转string

    string转 bytes 使用 encode str_a = "Python" str_bytes = str_a.encode() # encode默认编码方式是utf-8 所 ...

  9. TypeError: string argument without an encoding

    这个错误是把string 类型转byte类型的时候出现的问题 下面就会报错 print(bytes(str_a)) 修改为如下就好了 print(bytes(str_a.encode())) 或者就不 ...

最新文章

  1. 007_logback配置
  2. Kotlin 和Spring WebFlux
  3. easyui中dialog的常犯错误
  4. Sublime Text 2 入门及技巧
  5. Oracle12c操作命令
  6. VirtualBox虚拟机,WIN7的性能远远落后于LINUX及解决办法
  7. 网页链接在线提取工具-免费网页链接在线提取软件
  8. 手游内存辅助开发教程
  9. MATLAB录制音频显示波形,并绘制其频谱
  10. 比起高性能计算,高端存储才更亟待国产化
  11. 机器学习之实现一元线性回归模型
  12. java给word表格追加行_Java 使用Spire.Cloud.Word给Word文档添加表格
  13. 企业增强型融合通讯解决方案Cnskype
  14. Java实现 LeetCode 756 金字塔转换矩阵(DFS)
  15. 爬取6.6w+豆瓣电影之后,分析他们的故事
  16. 解决Total Commander总是使用老旧的“Windows照片查看器”打开图片的问题
  17. 2.4市场需求文档MRD
  18. SC662K 输入6V 输出3.3V 250mA 线性LDO
  19. 递归实现:一个人赶着鸭子去每个村庄卖,每经过一个 村子卖去所赶鸭子的一半又一只。 这样他经过了 七个村子后还剩 两只鸭子,问问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
  20. 11、ADS使用记录之LNA设计

热门文章

  1. latex±号_latex中数学符号
  2. 《墨菲定律:世界上最有趣最有用的定律》笔记
  3. python字符串s最后一个字符的位置是_python截取字符串后几位?
  4. 安卓开机画面_iPad拜拜!虎贲芯片+安卓10全局手势触控,quot;国产之光quot;台电P20HD...
  5. linux 查看文件句柄,查看linux下进程打开的文件句柄数并清理
  6. 第十七天学习记录:工作相关:Qt控件设置setEnabled(false)的问题。
  7. 网易的“草长莺飞二月天”:增长稳健,加码研发,逐浪AI
  8. 乔巴机器人合体_BANDAI 万代 海贼王 乔巴合体机器人之乔巴吊车
  9. 8个值得推荐的手机APP,个个都是极品
  10. 还在用print()查找错误?日志消息这顿排骨它不香嘛?