using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace CentralControl { public class HttpCli { /// /// 指定Url地址使用Get 方式获取全部字符串 /// /// 请求链接地址 /// public static string Get(string url) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); try { //获取内容 using (StreamReader reader = new StreamReader(stream)) { result = reader.ReadToEnd(); } } finally { stream.Close(); } return result; } public static void GetFile(string url,string path) { WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); if (response.ContentType.ToLower().Length > 0) { using (Stream reader = response.GetResponseStream()) { using (FileStream writer = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024]; int c = 0; while ((c = reader.Read(buffer, 0, buffer.Length)) > 0) { writer.Write(buffer, 0, c); } } } //HttpContext } } public static byte[] GetFile_Bytes(string url) { byte[] bytesAll = null; WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); if (response.ContentType.ToLower().Length > 0) { using (Stream reader = response.GetResponseStream()) { MemoryStream ms = new MemoryStream(); byte[] buffer = new byte[1024]; while (true) { int sz = reader.Read(buffer, 0, 1024); if (sz == 0) break; ms.Write(buffer, 0, sz); } bytesAll = ms.ToArray(); } } //如是图片 //System.Drawing.Image img = System.Drawing.Image.FromStream(ms); return bytesAll; } public void FGHJ() { // Create a 'WebRequest' object with the specified url. WebRequest myWebRequest = WebRequest.Create("http://www.contoso.com"); // Send the 'WebRequest' and wait for response. WebResponse myWebResponse = myWebRequest.GetResponse(); // Obtain a 'Stream' object associated with the response object. Stream ReceiveStream = myWebResponse.GetResponseStream(); Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); // Pipe the stream to a higher level stream reader with the required encoding format. StreamReader readStream = new StreamReader(ReceiveStream, encode); Console.WriteLine("\nResponse stream received"); Char[] read = new Char[256]; // Read 256 charcters at a time. int count = readStream.Read(read, 0, 256); Console.WriteLine("HTML...\r\n"); while (count > 0) { // Dump the 256 characters on a string and display the string onto the console. String str = new String(read, 0, count); Console.Write(str); count = readStream.Read(read, 0, 256); } Console.WriteLine(""); // Release the resources of stream object. readStream.Close(); // Release the resources of response object. myWebResponse.Close(); } /// /// 发送Get请求 /// /// 地址 /// 请求参数定义 /// public static string Get(string url, Dictionary dic) { string result = ""; StringBuilder builder = new StringBuilder(); builder.Append(url); if (dic.Count > 0) { builder.Append("?"); int i = 0; foreach (var item in dic) { if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item.Value); i++; } } HttpWebRequest req = (HttpWebRequest)WebRequest.Create(builder.ToString()); //添加参数 HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); try { //获取内容 using (StreamReader reader = new StreamReader(stream)) { result = reader.ReadToEnd(); } } finally { stream.Close(); } return result; } /// /// 指定Post地址使用Get 方式获取全部字符串 /// /// 请求后台地址 /// public static string Post(string url) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } /// /// 指定Post地址使用Get 方式获取全部字符串 /// /// 请求后台地址 /// public static string Post(string url, Dictionary dic) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; #region 添加Post 参数 StringBuilder builder = new StringBuilder(); int i = 0; foreach (var item in dic) { if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item.Value); i++; } byte[] data = Encoding.UTF8.GetBytes(builder.ToString()); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } /// /// 指定Post地址使用Get 方式获取全部字符串 /// /// 请求后台地址 /// Post提交数据内容(utf-8编码的) /// public static string Post(string url, string content) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Headers.Add("token", "factory2"); //如果接口需要鉴权, 把"token"换成自己需要的 req.Method = "POST"; req.ContentType = "application/json"; #region 添加Post 参数 byte[] data = Encoding.UTF8.GetBytes(content); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } /// /// Http下载文件 /// /// 下载地址 /// 存放完整路径(含文件名) /// 每次多的大小 /// 下载操作是否成功 public static bool DownLoadFiles(string uri, string filefullpath, int size = 1000000) { try { if (File.Exists(filefullpath)) { try { File.Delete(filefullpath); } catch (Exception ex) { return false; } } string fileDirectory = System.IO.Path.GetDirectoryName(filefullpath); if (!Directory.Exists(fileDirectory)) { Directory.CreateDirectory(fileDirectory); } FileStream fs = new FileStream(filefullpath, FileMode.Create); byte[] buffer = new byte[size]; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Timeout = 100000; request.AddRange((int)fs.Length); Stream ns = request.GetResponse().GetResponseStream(); long contentLength = request.GetResponse().ContentLength; int length = ns.Read(buffer, 0, buffer.Length); while (length > 0) { fs.Write(buffer,0 , length); buffer = new byte[size]; length = ns.Read(buffer, 0, buffer.Length); } fs.Close(); return true; } catch (Exception ex) { return false; } } } }