- 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 }