NetHelper.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Net;
  7. using System.Drawing;
  8. using System.Globalization;
  9. using System.Web;
  10. namespace Common
  11. {
  12. /// <summary>
  13. /// 网络相关帮助类
  14. /// </summary>
  15. public class NetHelper
  16. {
  17. /// <summary>
  18. /// 获取IP
  19. /// </summary>
  20. /// <returns></returns>
  21. public static string GetIP()
  22. {
  23. string ip = string.Empty;
  24. if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"]))
  25. ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
  26. if (string.IsNullOrEmpty(ip))
  27. ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
  28. if (string.IsNullOrEmpty(ip))
  29. ip = System.Web.HttpContext.Current.Request.UserHostAddress;
  30. return ip;
  31. }
  32. /// <summary>
  33. /// 通过IP地址获取所属国家,省份,城市
  34. /// </summary>
  35. /// <param name="IP"></param>
  36. /// <returns></returns>
  37. public static List<string> GetCityByIP(string IP)
  38. {
  39. var url = string.Format(@"http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip={0}", IP);
  40. var htmlsource = GetUrlResponse(url, Encoding.GetEncoding("gbk"));
  41. if (!string.IsNullOrWhiteSpace(htmlsource))
  42. {
  43. string[] sarray = htmlsource.Trim().Split(new string[] { "\t" }, StringSplitOptions.RemoveEmptyEntries);
  44. if (sarray.Length == 6)
  45. {
  46. List<string> result = new List<string>();
  47. result.Add(sarray[3]);
  48. result.Add(sarray[4]);
  49. result.Add(sarray[5]);
  50. return result;
  51. }
  52. }
  53. return null;
  54. }
  55. /// <summary>
  56. /// 请求Url资源
  57. /// </summary>
  58. /// <param name="url">目标Url地址</param>
  59. /// <returns></returns>
  60. public static string GetUrlResponse(string url)
  61. {
  62. if (!string.IsNullOrWhiteSpace(url))
  63. return GetUrlResponse(url, Encoding.UTF8);
  64. return string.Empty;
  65. }
  66. /// <summary>
  67. /// 请求Url资源
  68. /// </summary>
  69. /// <param name="url">目标Url地址</param>
  70. /// <param name="encode">编码规则</param>
  71. /// <returns></returns>
  72. public static string GetUrlResponse(string url, Encoding encode)
  73. {
  74. if (!string.IsNullOrWhiteSpace(url) && encode != null)
  75. return GetUrlResponse(url, "GET", string.Empty, encode);
  76. return string.Empty;
  77. }
  78. /// <summary>
  79. /// 请求Url资源
  80. /// </summary>
  81. /// <param name="url">目标Url地址</param>
  82. /// <param name="method">请求方式</param>
  83. /// <param name="postdata">请求附加数据</param>
  84. /// <returns></returns>
  85. public static string GetUrlResponse(string url, string method, string postdata)
  86. {
  87. if (!string.IsNullOrWhiteSpace(url) && !string.IsNullOrWhiteSpace(method) && !string.IsNullOrWhiteSpace(postdata))
  88. return GetUrlResponse(url, method, postdata, Encoding.UTF8);
  89. return string.Empty;
  90. }
  91. /// <summary>
  92. /// 请求Url资源
  93. /// </summary>
  94. /// <param name="url">目标Url地址</param>
  95. /// <param name="method">请求方式</param>
  96. /// <param name="postdata">请求附加数据</param>
  97. /// <param name="encode">编码规则</param>
  98. /// <returns></returns>
  99. public static string GetUrlResponse(string url, string method, string postdata, Encoding encode)
  100. {
  101. Stream responseStream = null;
  102. try
  103. {
  104. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  105. request.Method = method;
  106. request.Timeout = 15000;
  107. if (!string.IsNullOrEmpty(postdata))
  108. {
  109. byte[] bs = encode.GetBytes(postdata);
  110. request.ContentLength = bs.Length;
  111. request.ContentType = "application/x-www-form-urlencoded";
  112. using (Stream requestStream = request.GetRequestStream())
  113. {
  114. requestStream.Write(bs, 0, bs.Length);
  115. }
  116. }
  117. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  118. var contentencode = response.ContentEncoding;
  119. if (contentencode == "gzip")
  120. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  121. else
  122. responseStream = response.GetResponseStream();
  123. using (StreamReader sr = new StreamReader(responseStream, encode))
  124. {
  125. var content = sr.ReadToEnd();
  126. return content.Replace("\r\n", string.Empty).Trim();
  127. }
  128. }
  129. catch( Exception ee)
  130. {
  131. }
  132. finally
  133. {
  134. if (responseStream != null)
  135. responseStream.Close();
  136. }
  137. return null;
  138. }
  139. #region 部分彩种自有请求网络数据方法
  140. /// <summary>
  141. /// 请求河南481(泳坛夺金)Url资源
  142. /// </summary>
  143. /// <param name="url">目标Url地址</param>
  144. /// <returns></returns>
  145. public static string GetHeNan481UrlResponse(string url)
  146. {
  147. Stream responseStream = null;
  148. try
  149. {
  150. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  151. request.Method = "GET";
  152. request.Timeout = 10000;
  153. CookieContainer container = new CookieContainer();
  154. Cookie cookie = new Cookie("JSESSIONID", "76322438526518B500CEB13023461A22", "/", "www.hnlottery.com.cn");
  155. container.Add(cookie);
  156. request.CookieContainer = container;
  157. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  158. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  159. var contentencode = response.ContentEncoding;
  160. if (contentencode == "gzip")
  161. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  162. else
  163. responseStream = response.GetResponseStream();
  164. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  165. {
  166. var content = sr.ReadToEnd();
  167. return content.Replace("\r\n", string.Empty).Trim();
  168. }
  169. }
  170. catch
  171. {
  172. }
  173. finally
  174. {
  175. if (responseStream != null)
  176. responseStream.Close();
  177. }
  178. return null;
  179. }
  180. /// <summary>
  181. /// 请求湖北11选5Url资源
  182. /// </summary>
  183. /// <param name="url">目标Url地址</param>
  184. /// <returns></returns>
  185. public static string GetHUB11X5UrlResponse(string url)
  186. {
  187. Stream responseStream = null;
  188. try
  189. {
  190. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  191. request.Method = "GET";
  192. request.Timeout = 10000;
  193. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  194. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  195. var contentencode = response.ContentEncoding;
  196. if (contentencode == "gzip")
  197. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  198. else
  199. responseStream = response.GetResponseStream();
  200. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  201. {
  202. var content = sr.ReadToEnd();
  203. return content.Replace("\r\n", string.Empty).Trim();
  204. }
  205. }
  206. catch
  207. {
  208. }
  209. finally
  210. {
  211. if (responseStream != null)
  212. responseStream.Close();
  213. }
  214. return null;
  215. }
  216. /// <summary>
  217. /// 请求山西11选5Url资源
  218. /// </summary>
  219. /// <param name="url">目标Url地址</param>
  220. /// <returns></returns>
  221. public static string GetShanXiTaiYuan11x5UrlResponse(string url)
  222. {
  223. Stream responseStream = null;
  224. try
  225. {
  226. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  227. request.Method = "GET";
  228. request.Timeout = 10000;
  229. CookieContainer container = new CookieContainer();
  230. Cookie cookie = new Cookie("JSESSIONID", "F76502A5D6582D7286C9CE7656FDAAEF", "/", "www.sxlottery.net");
  231. container.Add(cookie);
  232. request.CookieContainer = container;
  233. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  234. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  235. var contentencode = response.ContentEncoding;
  236. if (contentencode == "gzip")
  237. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  238. else
  239. responseStream = response.GetResponseStream();
  240. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  241. {
  242. var content = sr.ReadToEnd();
  243. return content.Replace("\r\n", string.Empty).Trim();
  244. }
  245. }
  246. catch
  247. {
  248. }
  249. finally
  250. {
  251. if (responseStream != null)
  252. responseStream.Close();
  253. }
  254. return null;
  255. }
  256. /// <summary>
  257. /// 请求重庆快乐十分Url资源
  258. /// </summary>
  259. /// <param name="url">目标Url地址</param>
  260. /// <param name="pageIndex">页码</param>
  261. /// <returns></returns>
  262. public static string GetCQKL10FUrlResponse(string url, int pageIndex)
  263. {
  264. Stream responseStream = null;
  265. try
  266. {
  267. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  268. request.Method = "POST";
  269. request.Timeout = 10000;
  270. CookieContainer container = new CookieContainer();
  271. Cookie cookie = new Cookie("ASP.NET_SessionId", "4e0ri0cjp5pyjkigils0wzvy", "/", "buy.cqcp.net");
  272. container.Add(cookie);
  273. request.CookieContainer = container;
  274. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  275. var postdata = "sPass=BEAB95B0BAA1242CF042D1659686F54B&idMode=9&iType=2&iCount=" + pageIndex;
  276. byte[] bs = Encoding.GetEncoding("gb2312").GetBytes(postdata);
  277. request.ContentLength = bs.Length;
  278. request.ContentType = "application/x-www-form-urlencoded";
  279. using (Stream requestStream = request.GetRequestStream())
  280. {
  281. requestStream.Write(bs, 0, bs.Length);
  282. }
  283. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  284. var contentencode = response.ContentEncoding;
  285. if (contentencode == "gzip")
  286. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  287. else
  288. responseStream = response.GetResponseStream();
  289. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))
  290. {
  291. var content = sr.ReadToEnd();
  292. return content.Replace("\r\n", string.Empty).Trim();
  293. }
  294. }
  295. catch
  296. {
  297. }
  298. finally
  299. {
  300. if (responseStream != null)
  301. responseStream.Close();
  302. }
  303. return null;
  304. }
  305. /// <summary>
  306. /// 请求百度彩票Url资源
  307. /// </summary>
  308. /// <param name="url">目标Url地址</param>
  309. /// <returns></returns>
  310. public static string GetBaiDuLeCaiResponse(string url)
  311. {
  312. Stream responseStream = null;
  313. try
  314. {
  315. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  316. request.Method = "GET";
  317. request.Timeout = 10000;
  318. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  319. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  320. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  321. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  322. CookieContainer container = new CookieContainer();
  323. Cookie cookie = new Cookie("lehecai_request_control_stats", "2", "/", "baidu.lecai.com");
  324. container.Add(cookie);
  325. cookie = new Cookie("_lcas_uuid", "1886243347", "/", "baidu.lecai.com");
  326. container.Add(cookie);
  327. cookie = new Cookie("_lhc_uuid", "sp_587888388668b5.45001252", "/", "baidu.lecai.com");
  328. container.Add(cookie);
  329. request.CookieContainer = container;
  330. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  331. var contentencode = response.ContentEncoding;
  332. if (contentencode == "gzip")
  333. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  334. else
  335. responseStream = response.GetResponseStream();
  336. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))
  337. {
  338. var content = sr.ReadToEnd();
  339. return content.Replace("\r\n", string.Empty).Trim();
  340. }
  341. }
  342. catch
  343. {
  344. }
  345. finally
  346. {
  347. if (responseStream != null)
  348. responseStream.Close();
  349. }
  350. return null;
  351. }
  352. /// <summary>
  353. /// 请求甘肃11选5Url资源
  354. /// </summary>
  355. /// <param name="url">目标Url地址</param>
  356. /// <returns></returns>
  357. public static string GetGS11X5UrlResponse(string url)
  358. {
  359. Stream responseStream = null;
  360. try
  361. {
  362. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  363. request.Method = "GET";
  364. request.Timeout = 10000;
  365. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  366. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  367. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  368. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  369. CookieContainer container = new CookieContainer();
  370. Cookie cookie = new Cookie("sid", "d4cc22d9-9b4c-49d0-8965-61e3fdbe8167", "/", "www.gstc.org.cn");
  371. container.Add(cookie);
  372. request.CookieContainer = container;
  373. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  374. var contentencode = response.ContentEncoding;
  375. if (contentencode == "gzip")
  376. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  377. else
  378. responseStream = response.GetResponseStream();
  379. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))
  380. {
  381. var content = sr.ReadToEnd();
  382. return content.Replace("\r\n", string.Empty).Trim();
  383. }
  384. }
  385. catch
  386. {
  387. }
  388. finally
  389. {
  390. if (responseStream != null)
  391. responseStream.Close();
  392. }
  393. return null;
  394. }
  395. /// <summary>
  396. /// 请求吉林11选5Url资源
  397. /// </summary>
  398. /// <param name="url">目标Url地址</param>
  399. /// <param name="postdata">传送数据</param>
  400. /// <returns></returns>
  401. public static string GetJL11X5UrlResponse(string url, string postdata)
  402. {
  403. Stream responseStream = null;
  404. try
  405. {
  406. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  407. request.Method = "POST";
  408. request.Timeout = 10000;
  409. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  410. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  411. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  412. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  413. request.Referer = "http://jl.lottery.gov.cn/11x5.aspx";
  414. //CookieContainer container = new CookieContainer();
  415. //Cookie cookie = new Cookie("sid", "d4cc22d9-9b4c-49d0-8965-61e3fdbe8167", "/", "www.gstc.org.cn");
  416. //container.Add(cookie);
  417. //request.CookieContainer = container;
  418. byte[] bs = Encoding.UTF8.GetBytes(postdata);
  419. request.ContentLength = bs.Length;
  420. request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  421. using (Stream requestStream = request.GetRequestStream())
  422. {
  423. requestStream.Write(bs, 0, bs.Length);
  424. }
  425. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  426. var contentencode = response.ContentEncoding;
  427. if (contentencode == "gzip")
  428. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  429. else
  430. responseStream = response.GetResponseStream();
  431. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  432. {
  433. var content = sr.ReadToEnd();
  434. return content.Replace("\r\n", string.Empty).Trim();
  435. }
  436. }
  437. catch
  438. {
  439. }
  440. finally
  441. {
  442. if (responseStream != null)
  443. responseStream.Close();
  444. }
  445. return null;
  446. }
  447. /// <summary>
  448. /// 从彩票控爬取山西快乐十分开奖资源
  449. /// </summary>
  450. /// <param name="url">彩票控地址</param>
  451. /// <returns></returns>
  452. public static string GetShanXiTaiYuanKL10FResource(string url)
  453. {
  454. Stream responseStream = null;
  455. try
  456. {
  457. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  458. request.Method = "GET";
  459. request.Timeout = 10000;
  460. request.Referer = "https://www.baidu.com/link?url=LlPuYDRBAgub8jzVvo8sugb4Js5-NQDPuKAGXZrc-UNS2AiizIzaKJC0C90Jh0rWEK7qargFxEp2lKxQwx1Vxa&wd=&eqid=abe817410018bc0a0000000557393f77";
  461. request.Host = "www.caipiaokong.com";
  462. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  463. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  464. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  465. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36";
  466. request.Headers.Add("Cache-Control", "max-age=0");
  467. request.Headers.Add("Upgrade-Insecure-Requests", "1");
  468. request.Headers.Add("Cookie", "BAIDU_SSP_lcr=https://www.baidu.com/link?url=LlPuYDRBAgub8jzVvo8sugb4Js5-NQDPuKAGXZrc-UNS2AiizIzaKJC0C90Jh0rWEK7qargFxEp2lKxQwx1Vxa&wd=&eqid=abe817410018bc0a0000000557393f77; __cfduid=d506c4c6a0c7f88d91869fa379b2cb1421462343508; caipiaokong_4891_saltkey=MsvISvSd; caipiaokong_4891_lastvisit=1462339908; caipiaokong_4891_caipiaokong_eNr=1; caipiaokong_4891_lastact=1463370823%09index.php%09shxklsf; Hm_lvt_1fa650cb7d8eae53d0e6fbd8aec3eb67=1463369580,1463369608,1463369847,1463370211; Hm_lpvt_1fa650cb7d8eae53d0e6fbd8aec3eb67=1463370839");
  469. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  470. var contentencode = response.ContentEncoding;
  471. if (contentencode == "gzip")
  472. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  473. else
  474. responseStream = response.GetResponseStream();
  475. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))//.UTF8))
  476. {
  477. var content = sr.ReadToEnd();
  478. return content;
  479. }
  480. }
  481. catch
  482. {
  483. }
  484. finally
  485. {
  486. if (responseStream != null)
  487. responseStream.Close();
  488. }
  489. return string.Empty;
  490. }
  491. #endregion
  492. /// <summary>
  493. /// 保存网络图片
  494. /// </summary>
  495. /// <param name="ImageUrl">网络图片地址</param>
  496. /// <param name="SavePath">图片保存文件夹</param>
  497. /// <param name="SaveUrl">对应URL访问基础地址</param>
  498. /// <returns></returns>
  499. public static string SaveNetImage(string ImageUrl, string SavePath, string SaveUrl)
  500. {
  501. return SaveNetImage(ImageUrl, SavePath, SaveUrl, string.Empty);
  502. }
  503. /// <summary>
  504. /// 保存网络图片
  505. /// </summary>
  506. /// <param name="ImageUrl">网络图片地址</param>
  507. /// <param name="SavePath">图片保存文件夹</param>
  508. /// <param name="viewUrl">对应URL访问基础地址</param>
  509. /// <param name="FixFolderName">固定文件夹名(用于相同类型图片放在一个文件夹中,可空)</param>
  510. /// <returns></returns>
  511. public static string SaveNetImage(string ImageUrl, string SavePath, string viewUrl, string FixFolderName)
  512. {
  513. try
  514. {
  515. HttpWebRequest request = HttpWebRequest.Create(ImageUrl) as HttpWebRequest;
  516. request.Method = "GET";
  517. request.Timeout = 5000;
  518. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36";
  519. request.KeepAlive = true;
  520. request.ProtocolVersion = HttpVersion.Version10;
  521. request.Headers.Add("Cookie", "__cfduid=d53136a7fdcb2c4c64f8ed24a66b32f251476954305");
  522. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  523. Image img = Image.FromStream(response.GetResponseStream());
  524. var today = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
  525. var saveFolder = Path.Combine(SavePath, today, FixFolderName);
  526. if (!Directory.Exists(saveFolder))
  527. {
  528. Directory.CreateDirectory(saveFolder);
  529. }
  530. var fileExt = Path.GetExtension(ImageUrl).ToLower();
  531. string[] imgExt = new string[] { ".gif", ".jpg", ".jpeg", ".png", ".bmp" };
  532. if (string.IsNullOrWhiteSpace(fileExt) || Array.IndexOf(imgExt, fileExt) == -1)
  533. fileExt = ".jpg";
  534. var savefile = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
  535. img.Save(Path.Combine(saveFolder, savefile));
  536. return UrlCombine(viewUrl, today, FixFolderName, savefile);
  537. }
  538. catch
  539. {
  540. }
  541. return string.Empty;
  542. }
  543. /// <summary>
  544. /// URL路径拼写
  545. /// </summary>
  546. /// <param name="paths">路径参数列表</param>
  547. /// <returns></returns>
  548. public static string UrlCombine(params string[] paths)
  549. {
  550. if (paths == null || paths.Length == 0)
  551. {
  552. throw new ArgumentNullException("paths");
  553. }
  554. StringBuilder sb = new StringBuilder();
  555. string item = string.Empty;
  556. for (int i = 0; i < paths.Length; i++)
  557. {
  558. item = paths[i];
  559. if (item == null)
  560. {
  561. throw new ArgumentNullException("paths");
  562. }
  563. if (item.Length != 0)
  564. {
  565. if (item.StartsWith("/"))
  566. item = item.Substring(1);
  567. if (item.IndexOf(".") != -1)
  568. {
  569. sb.Append(item);
  570. }
  571. else if (item.EndsWith("/"))
  572. sb.Append(item);
  573. else
  574. sb.Append(item + "/");
  575. }
  576. }
  577. return sb.ToString();
  578. }
  579. }
  580. }