NetHelper.cs 28 KB

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