利用HttpWebRequest模拟表单提交 JQuery 的一个轻量级 Guid 字符串拓展插件. 轻量级Config文件AppSettings节点编辑帮助类

利用HttpWebRequest模拟表单提交

 
复制代码
  1 using System;
  2 using System.Collections.Specialized;
  3 using System.IO;
  4 using System.Net;
  5 using System.Text;
  6 
  7 namespace Allyn.Common
  8 {
  9     public class HttpHelper
 10     {
 11         /// <summary>
 12         /// 获取指定路径数据
 13         /// </summary>
 14         /// <param name="requestUri">提交路径</param>
 15         /// <param name="cookie">Cookie容器对象</param>
 16         /// <returns>字符串结果</returns>
 17         public static string GetForm(string requestUri, CookieContainer cookie)
 18         {
 19             HttpWebRequest request = WebRequest.CreateHttp(requestUri);
 20             request.Method = "get";
 21             request.CookieContainer = cookie;
 22             request.ContentLength = 0;
 23 
 24             WebResponse response = request.GetResponse();
 25             StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
 26             return reader.ReadToEnd();
 27         }
 28 
 29         /// <summary>
 30         /// 默认表单提交
 31         /// </summary>
 32         /// <param name="requestUri">提交路径</param>
 33         /// <param name="postData">提交数据</param>
 34         /// <param name="cookie">Cookie容器对象</param>
 35         /// <returns>字符串结果</returns>
 36         public static string PostForm(string requestUri, NameValueCollection postData, CookieContainer cookie)
 37         {
 38             HttpWebRequest request = WebRequest.CreateHttp(requestUri);
 39             request.Method = "post";
 40             request.ContentType = "application/x-www-form-urlencoded";
 41             request.CookieContainer = cookie;
 42 
 43             StringBuilder stringBuilder = new StringBuilder();
 44             foreach (string key in postData.Keys)
 45             {
 46                 stringBuilder.AppendFormat("&{0}={1}", key, postData.Get(key));
 47             }
 48             byte[] buffer = Encoding.UTF8.GetBytes(stringBuilder.ToString().Trim('&'));
 49             Stream requestStream = request.GetRequestStream();
 50             requestStream.Write(buffer, 0, buffer.Length);
 51             requestStream.Close();
 52 
 53             WebResponse response = request.GetResponse();
 54             StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
 55             return reader.ReadToEnd();
 56         }
 57 
 58         /// <summary>
 59         /// 多部件表单提交
 60         /// </summary>
 61         /// <param name="requestUri">提交路径</param>
 62         /// <param name="postData">提交数据.注:如果是文件路径,代表是文件.</param>
 63         /// <param name="cookie">Cookie容器对象</param>
 64         /// <returns>字符串结果</returns>
 65         public static string PostFormMultipart(string requestUri, NameValueCollection postData, CookieContainer cookie)
 66         {
 67             string boundary = string.Format("-----{0}", DateTime.Now.Ticks.ToString("x"));
 68             HttpWebRequest webrequest = WebRequest.CreateHttp(requestUri);
 69             webrequest.CookieContainer = cookie;
 70             webrequest.Timeout = 120000;
 71             webrequest.Method = "post";
 72             webrequest.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
 73 
 74             Stream requestStream = webrequest.GetRequestStream();
 75             foreach (string key in postData.Keys)
 76             {
 77                 StringBuilder strBuilder = new StringBuilder();
 78                 strBuilder.AppendFormat("--{0}", boundary);
 79                 strBuilder.AppendFormat("\r\nContent-Disposition: form-data; name=\"{0}\"", key);
 80                 if (File.Exists(postData.Get(key)))
 81                 {
 82                     strBuilder.AppendFormat(";filename=\"{0}\"\r\nContent-Type: multipart/form-data\r\n\r\n", Path.GetFileName(postData.Get(key)));
 83                     byte[] buffer = Encoding.UTF8.GetBytes(strBuilder.ToString());
 84                     requestStream.Write(buffer, 0, buffer.Length);
 85                     //获取图片流
 86                     FileStream fileStream = new FileStream(postData.Get(key), FileMode.Open, FileAccess.Read);
 87                     BinaryReader binaryReader = new BinaryReader(fileStream);
 88                     byte[] fileBuffer = binaryReader.ReadBytes((int)fileStream.Length);
 89                     binaryReader.Close();
 90                     fileStream.Close();
 91                     requestStream.Write(fileBuffer, 0, fileBuffer.Length);
 92                 }
 93                 else
 94                 {
 95                     strBuilder.AppendFormat("\r\n\r\n{0}\r\n", postData.Get(key));
 96                     byte[] buff = Encoding.UTF8.GetBytes(strBuilder.ToString());
 97                     requestStream.Write(buff, 0, buff.Length);
 98                 }
 99             }
100 
101             byte[] boundaryBuffer = Encoding.UTF8.GetBytes(string.Format("\r\n--{0}\r\n", boundary));
102             requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length);
103             requestStream.Close();
104 
105             WebResponse response = webrequest.GetResponse();
106             StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
107             return reader.ReadToEnd();
108         }
109     }
110 }
复制代码

 

 

 

JQuery 的一个轻量级 Guid 字符串拓展插件.

 
复制代码
 1 (function ($) {
 2     function guid(g) {
 3         var arr = new Array(); //存放32位数值的数组
 4         if (typeof (g) == "string") { //如果构造函数的参数为字符串
 5             initializeByString(arr, g);
 6         } else {
 7             initializeByOther(arr);
 8         }
 9         //返回一个值,该值指示 Guid 的两个实例是否表示同一个值。
10         this.equals = function (o) {
11             if (o && o.isGuid()) {
12                 return this.toString() == o.toString();
13             }
14             else {
15                 return false;
16             }
17         }
18         //Guid对象的标记
19         this.isGuid = function () {
20             return /^[0-9a-fA-F]{32}?$|^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}?$/.test(this);
21         }
22         //返回 Guid 类的此实例值的 String 表示形式。
23         this.toString = function (format) {
24             if (typeof (format) == "string") {
25                 if (format == "N" || format == "D" || format == "B" || format == "P") {
26                     return toStringWithFormat(arr, format);
27                 } else {
28                     return toStringWithFormat(arr, "D");
29                 }
30             }
31             else {
32                 return toStringWithFormat(arr, "D");
33             }
34         }
35         //由字符串加载
36         function initializeByString(arr, g) {
37             g = g.replace(/\{|\(|\)|\}|-/g, "");
38             g = g.toLowerCase();
39             if (g.length != 32 || g.search(/[^0-9,a-f]/i) != -1) {
40                 initializeByOther(arr);
41             } else {
42                 for (var i = 0; i < g.length; i++) {
43                     arr.push(g[i]);
44                 }
45             }
46         }
47         //由其他类型加载
48         function initializeByOther(arr) {
49             var i = 32;
50             while (i--) {
51                 arr.push("0");
52             }
53         }
54         /*
55         根据所提供的格式说明符,返回此 Guid 实例值的 String 表示形式。
56         N  32 位: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
57         D  由连字符分隔的 32 位数字 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
58         B  括在大括号中、由连字符分隔的 32 位数字:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
59         P  括在圆括号中、由连字符分隔的 32 位数字:(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
60         */
61         function toStringWithFormat(arr, format) {
62             switch (format) {
63                 case "N":
64                     return arr.toString().replace(/,/g, "");
65                 case "D":
66                     var str = arr.slice(0, 8) + "-" + arr.slice(8, 12) + "-" + arr.slice(12, 16) + "-" + arr.slice(16, 20) + "-" + arr.slice(20, 32);
67                     str = str.replace(/,/g, "");
68                     return str;
69                 case "B":
70                     var str = toStringWithFormat(arr, "D");
71                     str = "{" + str + "}";
72                     return str;
73                 case "P":
74                     var str = toStringWithFormat(arr, "D");
75                     str = "(" + str + ")";
76                     return str;
77                 default:
78                     return new Guid();
79             }
80         }
81     }
82     $.extend({ guidEx: guid });
83     $.extend($.guidEx, {
84         enpty: function () {
85             return new guid();
86         },
87         newGuid: function () {
88             var g = "";
89             var i = 32;
90             while (i--) {
91                 g += Math.floor(Math.random() * 16.0).toString(16);
92             }
93             return new guid(g);
94         },
95         isGuid: function (g) {
96             return /^[0-9a-fA-F]{32}?$|^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}?$/.test(g);
97         }
98     });
99 })(jQuery);
复制代码

 

 

轻量级Config文件AppSettings节点编辑帮助类

 
复制代码
 1 using System.Configuration;
 2 using System.Windows.Forms;
 3 
 4 namespace Allyn.Common
 5 {
 6     public class XmlHeper
 7     {
 8         ///<summary> 
 9         ///返回Config文件中appSettings配置节的value项  
10         ///</summary> 
11         ///<param name="strKey">节点Key</param> 
12         ///<returns>值</returns> 
13         public static string GetAppConfig(string strKey)
14         {
15             string file = Application.ExecutablePath;
16             Configuration config = ConfigurationManager.OpenExeConfiguration(file);
17 
18             foreach (string key in config.AppSettings.Settings.AllKeys)
19             {
20                 if (key == strKey)
21                 {
22                     return config.AppSettings.Settings[strKey].Value.ToString();
23                 }
24             }
25             return string.Empty;
26         }
27 
28         ///<summary>  
29         ///在Config文件中appSettings配置节增加一对键值对  
30         ///</summary>  
31         ///<param name="newKey">节点名称</param>  
32         ///<param name="newValue">信值</param>  
33         public static void UpdateAppConfig(string newKey, string newValue)
34         {
35             string file = System.Windows.Forms.Application.ExecutablePath;
36             Configuration config = ConfigurationManager.OpenExeConfiguration(file);
37 
38             bool exist = false;
39 
40             foreach (string key in config.AppSettings.Settings.AllKeys)
41             {
42                 if (key == newKey) {  exist = true; }
43             }
44 
45             if (exist)  { config.AppSettings.Settings.Remove(newKey); }
46 
47             config.AppSettings.Settings.Add(newKey, newValue);
48             config.Save(ConfigurationSaveMode.Modified);
49 
50             ConfigurationManager.RefreshSection("appSettings");
51         }
52     }
53 }
复制代码

 

posted @ 2018-12-26 11:34  ~雨落忧伤~  阅读(73)  评论(0编辑  收藏  举报