123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- using System;
- using System.Diagnostics;
- using System.Drawing;
- using System.Globalization;
- using System.IO;
- using System.Net;
- using System.Text;
- namespace FCS.Common
- {
- /// <summary>
- /// 网络相关帮助类
- /// </summary>
- public class NetHelper
- {
- /// <summary>
- /// 请求Url资源
- /// </summary>
- /// <param name="url">目标Url地址</param>
- /// <param name="encode">编码规则</param>
- /// <returns></returns>
- public static string GetUrlResponse(string url, Encoding encode)
- {
- if (!string.IsNullOrWhiteSpace(url) && encode != null)
- return GetUrlResponse(url, "GET", string.Empty, encode);
- return string.Empty;
- }
- /// <summary>
- /// 请求Url资源
- /// </summary>
- /// <param name="url">目标Url地址</param>
- /// <param name="method">请求方式</param>
- /// <param name="postdata">请求附加数据</param>
- /// <returns></returns>
- public static string GetUrlResponse(string url, string method, string postdata)
- {
- if (!string.IsNullOrWhiteSpace(url) && !string.IsNullOrWhiteSpace(method) && !string.IsNullOrWhiteSpace(postdata))
- return GetUrlResponse(url, method, postdata, Encoding.UTF8);
- return string.Empty;
- }
- /// <summary>
- /// 请求Url资源
- /// </summary>
- /// <param name="url">目标Url地址</param>
- /// <param name="method">请求方式</param>
- /// <param name="postdata">请求附加数据</param>
- /// <param name="encode">编码规则</param>
- /// <returns></returns>
- public static string GetUrlResponse(string url, string method, string postdata, Encoding encode)
- {
- Stream responseStream = null;
- try
- {
- HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
- request.Method = method;
- request.Timeout = 15 * 1000;
- if (!string.IsNullOrEmpty(postdata))
- {
- byte[] bs = encode.GetBytes(postdata);
- request.ContentLength = bs.Length;
- request.ContentType = "application/x-www-form-urlencoded";
- using (Stream requestStream = request.GetRequestStream())
- {
- requestStream.Write(bs, 0, bs.Length);
- }
- }
- HttpWebResponse response = request.GetResponse() as HttpWebResponse;
- if (response.StatusCode == HttpStatusCode.OK)
- {
- var contentencode = response.ContentEncoding;
- if (contentencode == "gzip")
- responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
- else
- responseStream = response.GetResponseStream();
- using (StreamReader sr = new StreamReader(responseStream, encode))
- {
- var content = sr.ReadToEnd();
- return content.Replace("\r\n", string.Empty).Trim();
- }
- }
- else
- {
- Trace.WriteLine($"FCS.Common.NetHelper.GetUrlResponse执行错误,请求地址:{url},状态码:{response.StatusCode},{response.StatusDescription}.");
- return url+"|lg123456";
- }
- }
- catch (Exception e)
- {
- Trace.WriteLine($"FCS.Common.NetHelper.GetUrlResponse发生异常,请求地址:{url},异常信息{e.Message}.");
- if (e.Message.Contains("(403)"))
- {
- }
- return url + "|lg123456";
- }
- finally
- {
- if (responseStream != null)
- responseStream.Close();
- }
- }
- /// <summary>
- /// 保存网络图片
- /// </summary>
- /// <param name="ImageUrl">网络图片地址</param>
- /// <param name="SavePath">图片保存文件夹</param>
- /// <param name="SaveUrl">对应URL访问基础地址</param>
- /// <returns></returns>
- public static string SaveNetImage(string ImageUrl, string SavePath, string SaveUrl)
- {
- return SaveNetImage(ImageUrl, SavePath, SaveUrl, string.Empty);
- }
- /// <summary>
- /// 保存网络图片
- /// </summary>
- /// <param name="ImageUrl">网络图片地址</param>
- /// <param name="SavePath">图片保存文件夹</param>
- /// <param name="viewUrl">对应URL访问基础地址</param>
- /// <param name="FixFolderName">固定文件夹名(用于相同类型图片放在一个文件夹中,可空)</param>
- /// <returns></returns>
- public static string SaveNetImage(string ImageUrl, string SavePath, string viewUrl, string FixFolderName)
- {
- try
- {
- HttpWebRequest request = HttpWebRequest.Create(ImageUrl) as HttpWebRequest;
- request.Method = "GET";
- request.Timeout = 5000;
- request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36";
- request.KeepAlive = true;
- request.ProtocolVersion = HttpVersion.Version10;
- request.Headers.Add("Cookie", "__cfduid=d53136a7fdcb2c4c64f8ed24a66b32f251476954305");
- HttpWebResponse response = request.GetResponse() as HttpWebResponse;
- Image img = Image.FromStream(response.GetResponseStream());
- var today = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
- var saveFolder = Path.Combine(SavePath, today, FixFolderName);
- if (!Directory.Exists(saveFolder))
- {
- Directory.CreateDirectory(saveFolder);
- }
- var fileExt = Path.GetExtension(ImageUrl).ToLower();
- string[] imgExt = new string[] { ".gif", ".jpg", ".jpeg", ".png", ".bmp" };
- if (string.IsNullOrWhiteSpace(fileExt) || Array.IndexOf(imgExt, fileExt) == -1)
- fileExt = ".jpg";
- var savefile = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
- img.Save(Path.Combine(saveFolder, savefile));
- return UrlCombine(viewUrl, today, FixFolderName, savefile);
- }
- catch
- {
- }
- return string.Empty;
- }
- /// <summary>
- /// URL路径拼写
- /// </summary>
- /// <param name="paths">路径参数列表</param>
- /// <returns></returns>
- public static string UrlCombine(params string[] paths)
- {
- if (paths == null || paths.Length == 0)
- {
- throw new ArgumentNullException("paths");
- }
- StringBuilder sb = new StringBuilder();
- string item = string.Empty;
- for (int i = 0; i < paths.Length; i++)
- {
- item = paths[i];
- if (item == null)
- {
- throw new ArgumentNullException("paths");
- }
- if (item.Length != 0)
- {
- if (item.StartsWith("/"))
- item = item.Substring(1);
- if (item.IndexOf(".") != -1)
- {
- sb.Append(item);
- }
- else if (item.EndsWith("/"))
- sb.Append(item);
- else
- sb.Append(item + "/");
- }
- }
- return sb.ToString();
- }
- }
- }
|