using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;

namespace CP.Common
{
	public class HttpHelp
	{
        public static string HttpGet(string url, int timeout = 15, WebHeaderCollection header = null)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = "GET";
            request.Accept = "*/*";
            request.Timeout = (1000 * timeout);
            request.ServicePoint.Expect100Continue = false;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36";
            if (header != null)
            {
                request.Headers = header;
            }
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            string responseStr = string.Empty;
            try
            {
                responseStr = streamRead.ReadToEnd();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"url:{url} |||||||| 错误:{ex.Message}");
            }
            finally
            {
                streamRead.Close();
                streamResponse.Close();
                response.Close();
                request = null;
            }
            return responseStr;
        }
        public static string PostHttp(string url, string methodType, Dictionary<string, string> headers, string body = null)
		{
			HttpWebRequest request = null;
			StreamWriter sw = null;
			StreamReader s = null;
			string ret = "";
			try
			{
				request = (HttpWebRequest)WebRequest.Create(url);//请求
				request.Method = methodType;
				if (headers != null && headers.Count > 0)
					for (var i = 0; i < headers.Count; i++)
						request.Headers.Add(headers.ElementAt(i).Key, headers.ElementAt(i).Value);

				request.KeepAlive = true;
				//request.CookieContainer = cook;
				request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
				request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
				request.ServicePoint.Expect100Continue = false;
				request.ServicePoint.ConnectionLimit = int.MaxValue;

				if (!string.IsNullOrEmpty(body))
				{
					sw = new StreamWriter(request.GetRequestStream());//获取写入流
					sw.Write(body);
					sw.Flush();                                     //强制写入
				}

				WebResponse response = request.GetResponse();   //获取响应
				s = new StreamReader(response.GetResponseStream());//获取响应流
				ret = s.ReadToEnd();                             //读取数据
			}
			catch (Exception ex)
			{
				
			}
			finally
			{
				if (s != null) s.Close();
				if (sw != null) sw.Close();
				if (request != null) request.Abort();
				s = null;
				sw = null;
				request = null;
			}
			return ret;
		}
	}
}