APIHelper

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Common
{
    public class KeyValue
    {
        public string Key;
        public string Value;
        public string FilePath;
        public string ContentType = "*/*";

        public KeyValue(string key, string value, string filePath, string contentType)
        {
            Key = key;
            Value = value;
            FilePath = filePath;
            ContentType = contentType;
        }

        public KeyValue()
        { }

        public KeyValue(string key, string value, string filePath)
        {
            Key = key;
            Value = value;
            FilePath = filePath;
        }

        public KeyValue(string key, string value)
        {
            Key = key;
            Value = value;
        }
    }

    public class ContentType
    {
        public const string formUrlEncoded = "application/x-www-form-urlencoded";
        public const string formData = "form-data";
        public const string applicationJson = "application/json";
        public const string applicationText = "text/plain";
    }

    public static class APIHelper
    {
        //调主窗体的方法,折叠所有的项目
        public static event EventHandler SignOutEvent;

        //重新登录提示,只提示一次
        private static bool b_SignOutEvent = false;

        /// <summary>
        /// 调用api返回json
        /// </summary>
        /// <param name="url">api地址</param>
        /// <param name="jsonstr">接收参数</param>
        /// <param name="type">类型</param>
        /// <returns></returns>
        public static string HttpApi(string url, string jsonstr, string type, bool isAlert = true)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.KeepAlive = false;
                request.Accept = "text/html,application/xhtml+xml,*/*";
                request.ContentType = "application/json";
                request.Method = type.ToUpper().ToString();
                //设置超时时间1000s,有些接口响应时间就如生成底稿
                request.Timeout = 1000000;
                byte[] buffer = encoding.GetBytes(jsonstr);
                request.ContentLength = buffer.Length;
                request.Headers.Add("user-work-bench", "workBench");
                if (!string.IsNullOrEmpty(LoginUserInfo.CurrentUser.token))
                {
                    request.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    try
                    {
                        var parms = jsonstr.Split('&');
                        foreach (var p in parms)
                        {
                            if (p.Contains("token"))
                            {
                                request.Headers.Add("token", p.Split('=')[1]);
                            }
                        }
                    }
                    catch { }
                }
                var mac = Tool.GetMacByNetworkInterface();
                request.Headers.Add("code", mac);
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string result = string.Empty;
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    result = reader.ReadToEnd();
                }
                var items = (JObject)JsonConvert.DeserializeObject(result);
                if (!b_SignOutEvent)
                {
                    if ((result.Contains("5011") && result.Contains("异地登")) && isAlert)
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("4011") && (result.Contains("超时登")) && isAlert)
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")) && isAlert)
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("0002") && (result.Contains("无权访问")) && isAlert)
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (result.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return result;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpApi", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                var msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return msg;
            }
        }

        public static async Task<string> HttpApiAwait(string url, string paramStr)
        {
            return await HttpPostAsync(url, paramStr);
        }

        public static string HttpApiFile(string url, List<KeyValue> parms)
        {
            try
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                var mac = Tool.GetMacByNetworkInterface();
                MultipartFormDataContent form = new MultipartFormDataContent();

                if (LoginUserInfo.CurrentUser.token != null)
                {
                    parms.Add(new KeyValue("token", LoginUserInfo.CurrentUser.token));
                    form.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    foreach (KeyValue kv in parms)
                    {
                        if (kv.Key == "token")
                        {
                            form.Headers.Add("token", kv.Value);
                        }
                    }
                }
                form.Headers.Add("user-work-bench", "workBench");
                form.Headers.Add("code", mac);

                foreach (KeyValue kv in parms)
                {
                    if (kv.FilePath == null)
                    {
                        form.Add(new StringContent(kv.Value), kv.Key);
                    }
                    else
                    {
                        //文件只读,不能上传。所以上传文件,把属性设置未正常模式。
                        File.SetAttributes(kv.FilePath, FileAttributes.Normal);
                        using (FileStream fs = new FileStream(kv.FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                        {
                            byte[] buffur = new byte[fs.Length];
                            fs.Read(buffur, 0, (int)fs.Length);
                            form.Add(new ByteArrayContent(buffur, 0, buffur.Length), kv.Key, kv.Value);
                        }

                        if (kv.FilePath.Contains(Const.tempPath))
                        {
                            File.Delete(kv.FilePath);
                        }
                    }
                }

                string result = string.Empty;
                using (var httpClient = new HttpClient())
                {
                    httpClient.Timeout = TimeSpan.FromDays(1);
                    //异步Post
                    var response = httpClient.PostAsync(url, form).Result;
                    //输出Http响应状态码
                    //确保Http响应成功
                    if (response.IsSuccessStatusCode)
                    {
                        //异步读取json
                        result = response.Content.ReadAsStringAsync().Result;
                    }
                    else
                    {
                        //异步读取json
                        result = response.Content.ReadAsStringAsync().Result;
                    }
                }
                if (!b_SignOutEvent)
                {
                    if (result.Contains("异地登") && result.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("超时登") && result.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("0002") && (result.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (result.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return result;
            }
            catch (HttpRequestException ex)
            {
                LogManager.WriteError("HttpApiPost", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                var msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return msg;
            }
        }

        public static string HttpApiDownloadFile(string url, string jsonstr, string type, string fileFullName)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//webrequest请求api地址
                request.KeepAlive = false;
                request.Accept = "text/html,application/xhtml+xml,*/*";
                request.ContentType = "application/json";
                request.Method = type.ToUpper().ToString();//get或者post
                byte[] buffer = encoding.GetBytes(jsonstr);
                request.ContentLength = buffer.Length;
                request.Headers.Add("user-work-bench", "workBench");
                if (!string.IsNullOrEmpty(LoginUserInfo.CurrentUser.token))
                {
                    request.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    try
                    {
                        var parms = jsonstr.Split('&');
                        foreach (var p in parms)
                        {
                            if (p.Contains("token"))
                            {
                                request.Headers.Add("token", p.Split('=')[1]);
                            }
                        }
                    }
                    catch { }
                }
                var mac = Tool.GetMacByNetworkInterface();
                request.Headers.Add("code", mac);
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string result = string.Empty;
                using (Stream reader = response.GetResponseStream())
                {
                    if (fileFullName.Length > 259)
                    {
                        var guid = Guid.NewGuid().ToString();
                        var linkName = Const.tempGuidDictory + guid;
                        var sourcePath = Path.GetDirectoryName(fileFullName);
                        if (!Directory.Exists(sourcePath))
                        {
                            Directory.CreateDirectory(sourcePath);
                        }
                        FileUtils.FileMap(linkName, sourcePath);
                        fileFullName = linkName + "\\" + Path.GetFileName(fileFullName);
                    }
                    FileStream fileStream = new FileStream(fileFullName, FileMode.Create, FileAccess.Write);
                    byte[] bytes = new byte[1024];
                    int readSize = 0;
                    while ((readSize = reader.Read(bytes, 0, 1024)) > 0)
                    {
                        fileStream.Write(bytes, 0, readSize);
                        fileStream.Flush();
                    }
                    fileStream.Close();
                    reader.Close();
                    response.Close();
                }
                var msg = "{  code:200 ,data: '',msg: 'ok'}";
                return msg;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpApi", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                var msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return msg;
            }
        }

        /// <summary>
        /// 下载给定链接的文件,不需要web参数
        /// </summary>
        /// <param name="url"></param>
        /// <param name="filePath"></param>
        /// <param name="fileFullName"></param>
        /// <returns></returns>
        public static bool HttpDownLoadFileRequest(string url, string filePath, string fileFullName)
        {
            var msg = "{  code:404 ,data: '',msg: '下载失败'}";
            try
            {
                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(filePath + "\\" + fileFullName, 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);
                            }
                        }
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpDownLoadFileRequest", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                //msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return false;
            }
        }

        /// <summary>
        ///  psot请求 key-value,解决参数过大,优先用这个
        /// </summary>
        /// <param name="url">请求连接</param>
        /// <param name="parms">请求参数 字典类型</param>
        /// <param name="statusCode">请求状态码</param>
        /// <returns></returns>
        public static string HttpPost(string url, Dictionary<string, string> parms)
        {
            try
            {
                string result = string.Empty;
                //设置Http的正文
                var mac = Tool.GetMacByNetworkInterface();
                var httpContent = new FormUrlEncodedContent(parms);
                httpContent.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                httpContent.Headers.Add("user-work-bench", "workBench");
                httpContent.Headers.Remove("Content-Type");//必须
                httpContent.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//1.根据需求设置
                httpContent.Headers.Add("code", mac);
                using (var httpClient = new HttpClient())
                {
                    //异步Post
                    var response = httpClient.PostAsync(url, httpContent).Result;
                    //输出Http响应状态码
                    //确保Http响应成功
                    if (response.IsSuccessStatusCode)
                    {
                        //异步读取json
                        result = response.Content.ReadAsStringAsync().Result;
                    }
                }
                if (!b_SignOutEvent)
                {
                    if (result.Contains("异地登") && result.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("超时登") && result.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("0002") && (result.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (result.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return result;
            }
            catch (HttpRequestException ex)
            {
                LogManager.WriteError("HttpApiPost", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                var msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return msg;
            }
        }

        /// <summary>
        /// 使用Stream的方式,将参数附加到post请示
        /// </summary>
        /// <param name="url"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public static string HttpPostByStream(string url, Dictionary<string, string> dic)
        {
            string result = "";
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                req.Headers.Add("user-work-bench", "workBench");
                var mac = Tool.GetMacByNetworkInterface();
                req.Headers.Add("code", mac);

                #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();
                }
                if (!b_SignOutEvent)
                {
                    if (result.Contains("异地登") && result.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("超时登") && result.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("0002") && (result.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (result.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return result;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("", ex.StackTrace);
                return result;
            }
        }

        /// <summary>
        ///  psot请求 key-value,解决参数过大
        /// </summary>
        /// <param name="url">请求连接</param>
        /// <param name="parms">请求参数 字典类型</param>
        /// <param name="statusCode">请求状态码</param>
        /// <returns></returns>
        public static async Task<string> HttpPostAsync(string url, string parms, string contentType = ContentType.formUrlEncoded)
        {
            try
            {
                string result = string.Empty;
                //设置Http的正文
                var mac = Tool.GetMacByNetworkInterface();
                string p = parms;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                var httpContent = new StringContent(p, Encoding.UTF8);
                httpContent.Headers.Remove("Content-Type");//必须
                httpContent.Headers.Add("Content-Type", contentType);//1.根据需求设置
                httpContent.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                httpContent.Headers.Add("user-work-bench", "workBench");
                httpContent.Headers.Add("code", mac);
                using (var httpClient = new HttpClient())
                {
                    //异步Post
                    //var response = httpClient.PostAsync(url, httpContent).Result;
                    var response = await httpClient.PostAsync(url, httpContent);
                    //输出Http响应状态码
                    //确保Http响应成功
                    if (response.IsSuccessStatusCode)
                    {
                        //异步读取json
                        result = await response.Content.ReadAsStringAsync();
                    }
                }
                if (!b_SignOutEvent)
                {
                    if (result.Contains("异地登") && result.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("超时登") && result.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (result.Contains("0002") && (result.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (result.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return result;
            }
            catch (HttpRequestException ex)
            {
                LogManager.WriteError("HttpApiPost", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                var msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return msg;
            }
        }

        /// <summary>
        /// 带cookie执行登录
        /// </summary>
        /// <param name="url"></param>
        /// <param name="jsonstr"></param>
        /// <param name="type"></param>
        /// <param name="virifyCode"></param>
        /// <returns></returns>
        public static string LoginHttpApi(string url, string jsonstr, string type, string verifyCode)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//webrequest请求api地址
                request.KeepAlive = false;
                request.Accept = "text/html,application/xhtml+xml,*/*";
                TryAddCookie(request, new Cookie("mds_code", verifyCode, "/", ".cailian.net"));
                request.ContentType = "application/json";
                request.Method = type.ToUpper().ToString();//get或者post
                request.Headers.Add("user-work-bench", "workBench");
                request.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                var mac = Tool.GetMacByNetworkInterface();
                request.Headers.Add("code", mac);
                byte[] buffer = encoding.GetBytes(jsonstr);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    var result = reader.ReadToEnd();
                    if (!b_SignOutEvent)
                    {
                        if (result.Contains("异地登") && result.Contains("5011"))
                        {
                            MessageBoxEx.Show("账号异地登录,请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("超时登") && result.Contains("4011"))
                        {
                            MessageBoxEx.Show("超时登陆!请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                        {
                            MessageBoxEx.Show("请登录后使用!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("0002") && (result.Contains("无权访问")))
                        {
                            MessageBoxEx.Show("请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (b_SignOutEvent && SignOutEvent != null)
                        {
                            SignOutEvent(null, null);
                        }
                    }
                    else if (result.Contains("200"))
                    {
                        b_SignOutEvent = false;
                    }
                    return result;
                }
            }
            catch (Exception ex)
            {
                return "";
            }
        }

        public static bool TryAddCookie(this WebRequest webRequest, Cookie cookie)
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
            HttpWebRequest httpRequest = webRequest as HttpWebRequest;
            if (httpRequest == null)
            {
                return false;
            }

            if (httpRequest.CookieContainer == null)
            {
                httpRequest.CookieContainer = new CookieContainer();
            }

            httpRequest.CookieContainer.Add(cookie);
            return true;
        }

        /// <summary>
        /// 调用WebApi接口 Get
        /// </summary>
        /// <typeparam name="T">数据实体类</typeparam>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string HttpApiGet(string url)
        {
            try
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                Uri address = new Uri(url);
                using (WebClient client = new WebClient())
                {
                    client.Headers.Add("Accept", "application/json");
                    client.Headers.Add("user-work-bench", "workBench");
                    client.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                    client.Headers.Add("Type", "GET");
                    var mac = Tool.GetMacByNetworkInterface();
                    client.Headers.Add("code", mac);
                    client.Encoding = Encoding.UTF8;
                    string result = client.DownloadString(address);
                    if (!b_SignOutEvent)
                    {
                        if (result.Contains("异地登") && result.Contains("5011"))
                        {
                            MessageBoxEx.Show("账号异地登录,请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("超时登") && result.Contains("4011"))
                        {
                            MessageBoxEx.Show("超时登陆!请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                        {
                            MessageBoxEx.Show("请登录后使用!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("0002") && (result.Contains("无权访问")))
                        {
                            MessageBoxEx.Show("请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (b_SignOutEvent && SignOutEvent != null)
                        {
                            SignOutEvent(null, null);
                        }
                    }
                    else if (result.Contains("200"))
                    {
                        b_SignOutEvent = false;
                    }
                    return result;
                }
            }
            catch (Exception ex)
            {
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }

        public static async Task<string> HttpApiGetAwait(string url)
        {
            try
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                Uri address = new Uri(url);
                using (WebClient client = new WebClient())
                {
                    client.Headers.Add("Accept", "application/json");
                    client.Headers.Add("user-work-bench", "workBench");
                    client.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                    client.Headers.Add("Type", "GET");
                    var mac = Tool.GetMacByNetworkInterface();
                    client.Headers.Add("code", mac);
                    client.Encoding = Encoding.UTF8;
                    string result = await client.DownloadStringTaskAsync(address);
                    if (!b_SignOutEvent)
                    {
                        if (result.Contains("异地登") && result.Contains("5011"))
                        {
                            MessageBoxEx.Show("账号异地登录,请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("超时登") && result.Contains("4011"))
                        {
                            MessageBoxEx.Show("超时登陆!请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                        {
                            MessageBoxEx.Show("请登录后使用!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("0002") && (result.Contains("无权访问")))
                        {
                            MessageBoxEx.Show("请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (b_SignOutEvent && SignOutEvent != null)
                        {
                            SignOutEvent(null, null);
                        }
                    }
                    else if (result.Contains("200"))
                    {
                        b_SignOutEvent = false;
                    }
                    return result;
                }
            }
            catch (Exception ex)
            {
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }

        /// <summary>
        /// post带文件请求
        /// </summary>
        /// <param name="url"></param>
        /// <param name="files"></param>
        /// <param name="data"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        public static string HttpPostWithFile(string url, string[] files, Dictionary<string, string> data)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                string boundary = DateTime.Now.Ticks.ToString("X");
                byte[] boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
                byte[] endbytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Headers.Add("Type", "POST");
                request.Headers.Add("user-work-bench", "workBench");
                request.Headers.Add("token", LoginUserInfo.CurrentUser.token);
                var mac = Tool.GetMacByNetworkInterface();
                request.Headers.Add("code", mac);
                request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
                request.Method = "POST";
                request.KeepAlive = true;
                request.Accept = "*/*";
                request.Credentials = CredentialCache.DefaultCredentials;

                using (Stream stream = request.GetRequestStream())
                {
                    string formdataTemplate = "Content-Disposition:form-data;name=\"{0}\"\r\n\r\n{1}";
                    if (data != null)
                    {
                        foreach (string key in data.Keys)
                        {
                            stream.Write(boundarybytes, 0, boundarybytes.Length);
                            string formitem = string.Format(formdataTemplate, key, data[key]);
                            byte[] formitembytes = encoding.GetBytes(formitem);
                            stream.Write(formitembytes, 0, formitembytes.Length);
                        }
                    }

                    //上传文件模板
                    string headerTemplate = "Content-Disposition:form-data;name=\"{0}\";filename=\"{1}\"\r\nContent-Type:application/octet-stream\r\n\r\n";
                    byte[] buffer = new byte[6 * 1024 * 1024];
                    for (int i = 0; i < files.Length; i++)
                    {
                        stream.Write(boundarybytes, 0, boundarybytes.Length);
                        string header = string.Format(headerTemplate, "file", Path.GetFileName(files[i]));
                        byte[] headerbytes = encoding.GetBytes(header);
                        stream.Write(headerbytes, 0, headerbytes.Length);
                        using (FileStream fileStream = new FileStream(files[i], FileMode.Open, FileAccess.Read))
                        {
                            int r = fileStream.Read(buffer, 0, buffer.Length);
                            stream.Write(buffer, 0, r);
                        }
                    }
                    stream.Write(endbytes, 0, endbytes.Length);
                }
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader stream = new StreamReader(response.GetResponseStream()))
                {
                    string result = stream.ReadToEnd();
                    if (!b_SignOutEvent)
                    {
                        if (result.Contains("异地登") && result.Contains("5011"))
                        {
                            MessageBoxEx.Show("账号异地登录,请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("超时登") && result.Contains("4011"))
                        {
                            MessageBoxEx.Show("超时登陆!请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("6011") && (result.Contains("登录后使用") || result.Contains("请登录")))
                        {
                            MessageBoxEx.Show("请登录后使用!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (result.Contains("0002") && (result.Contains("无权访问")))
                        {
                            MessageBoxEx.Show("请重新登录!");
                            LoginUserInfo.CurrentUser = null;
                            b_SignOutEvent = true;
                        }
                        if (b_SignOutEvent && SignOutEvent != null)
                        {
                            SignOutEvent(null, null);
                        }
                    }
                    else if (result.Contains("200"))
                    {
                        b_SignOutEvent = false;
                    }
                    return result;
                }
            }
            catch (HttpRequestException ex)
            {
                LogManager.WriteError("HttpPostWithFile", "token:" + LoginUserInfo.CurrentUser.token + "请求url:" + url);
                var msg = "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
                return msg;
            }
        }

        /// <summary>
        /// 使用RestSharp库请示接口(解决传文件乱码的问题)
        /// </summary>
        /// <param name="url"></param>
        /// <param name="files"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string HttpPostWithRestFile(string url, string[] files, Dictionary<string, string> data)
        {
            try
            {
                var client = new RestClient(url);
                client.Timeout = -1;
                var request = new RestRequest();
                request.Method = Method.POST;
                request.AddHeader("token", LoginUserInfo.CurrentUser.token);
                request.AddHeader("user-work-bench", "workBench");
                var mac = Tool.GetMacByNetworkInterface();
                request.AddHeader("code", mac);
                if (data != null)
                {
                    foreach (string key in data.Keys)
                    {
                        request.AddParameter(key, data[key]);
                    }
                }
                //支持多文件提交
                if (files != null && files.Length > 0)
                {
                    for (int i = 0; i < files.Length; i++)
                    {
                        request.AddFile("file", files[0]);
                    }
                }
                IRestResponse response = client.Execute(request);
                if (!b_SignOutEvent)
                {
                    if (response.Content.Contains("异地登") && response.Content.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("超时登") && response.Content.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("6011") && (response.Content.Contains("登录后使用") || response.Content.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("0002") && (response.Content.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (response.Content.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return response.Content;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpPostWithRestFile", ex.StackTrace);
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }

        public static string HttpRestRequest(string url, string method = "POST")
        {
            try
            {
                var client = new RestClient(url)
                {
                    Timeout = -1
                };

                var m = Method.POST;
                if (method == "GET")
                {
                    m = Method.GET;
                }

                var request = new RestRequest(m);

                if (!string.IsNullOrEmpty(LoginUserInfo.CurrentUser.token))
                {
                    request.AddHeader("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    try
                    {
                        var parms = url.Split('&');
                        foreach (var p in parms)
                        {
                            if (p.Contains("token"))
                            {
                                request.AddHeader("token", p.Split('=')[1]);
                            }
                        }
                    }
                    catch { }
                }

                request.AddHeader("user-work-bench", "workBench");
                var mac = Tool.GetMacByNetworkInterface();
                request.AddHeader("code", mac);

                IRestResponse response = client.Execute(request);
                if (!b_SignOutEvent)
                {
                    if (response.Content.Contains("异地登") && response.Content.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("超时登") && response.Content.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("6011") && (response.Content.Contains("登录后使用") || response.Content.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("0002") && (response.Content.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (response.Content.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return response.Content;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpRestRequest", ex.StackTrace);
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }

        public static async Task<string> HttpRestRequestAwait(string url, string method = "POST")
        {
            try
            {
                var client = new RestClient(url)
                {
                    Timeout = -1
                };

                var m = Method.POST;
                if (method == "GET")
                {
                    m = Method.GET;
                }

                var request = new RestRequest(m);

                if (!string.IsNullOrEmpty(LoginUserInfo.CurrentUser.token))
                {
                    request.AddHeader("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    try
                    {
                        var parms = url.Split('&');
                        foreach (var p in parms)
                        {
                            if (p.Contains("token"))
                            {
                                request.AddHeader("token", p.Split('=')[1]);
                            }
                        }
                    }
                    catch { }
                }

                request.AddHeader("user-work-bench", "workBench");
                var mac = Tool.GetMacByNetworkInterface();
                request.AddHeader("code", mac);

                IRestResponse response = client.Execute(request);
                if (!b_SignOutEvent)
                {
                    if (response.Content.Contains("异地登") && response.Content.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("超时登") && response.Content.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("6011") && (response.Content.Contains("登录后使用") || response.Content.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("0002") && (response.Content.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (response.Content.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return response.Content;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpRestRequest", ex.StackTrace);
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }

        /// <summary>
        /// MultipartFormData Post方式提交
        /// </summary>
        /// <param name="url"></param>
        /// <param name="kVDatas"></param>
        /// <param name="method"></param>
        /// <param name="encoding"></param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static string HttpPostMultipartFormData(string url, Dictionary<string, string> kVDatas, string method = WebRequestMethods.Http.Post, string encoding = "UTF-8", int timeOut = -1)
        {
            string resultStr = "";
            try
            {
                string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
                byte[] boundarybytes = Encoding.GetEncoding(encoding).GetBytes("\r\n--" + boundary + "\r\n");
                byte[] endbytes = Encoding.GetEncoding(encoding).GetBytes("\r\n--" + boundary + "--\r\n");

                ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
                ServicePointManager.ServerCertificateValidationCallback = delegate (
                Object obj, X509Certificate certificate, X509Chain chain,
                SslPolicyErrors errors)
                {
                    return (true);
                };

                //1.HttpWebRequest
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.ContentType = "multipart/form-data; boundary=" + boundary;
                request.Method = method;
                request.KeepAlive = true;
                request.Timeout = timeOut;
                request.Headers.Add("token", LoginUserInfo.CurrentUser.token);

                using (Stream stream = request.GetRequestStream())
                {
                    //1.1 key/value
                    string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
                    if (kVDatas != null)
                    {
                        foreach (string key in kVDatas.Keys)
                        {
                            stream.Write(boundarybytes, 0, boundarybytes.Length);
                            string formitem = string.Format(formdataTemplate, key, kVDatas[key]);
                            byte[] formitembytes = Encoding.GetEncoding(encoding).GetBytes(formitem);
                            stream.Write(formitembytes, 0, formitembytes.Length);
                        }
                    }
                    stream.Write(endbytes, 0, endbytes.Length);
                }
                //2.WebResponse
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (StreamReader stream = new StreamReader(response.GetResponseStream()))
                    {
                        resultStr = stream.ReadToEnd();
                    }
                }
            }
            catch (WebException ex)
            {
                LogManager.WriteError("HttpPostMultipartFormData", ex.StackTrace);
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
            if (!b_SignOutEvent)
            {
                if (resultStr.Contains("异地登") && resultStr.Contains("5011"))
                {
                    MessageBoxEx.Show("账号异地登录,请重新登录!");
                    LoginUserInfo.CurrentUser = null;
                    b_SignOutEvent = true;
                }
                if (resultStr.Contains("超时登") && resultStr.Contains("4011"))
                {
                    MessageBoxEx.Show("超时登陆!请重新登录!");
                    LoginUserInfo.CurrentUser = null;
                    b_SignOutEvent = true;
                }
                if (resultStr.Contains("6011") && (resultStr.Contains("登录后使用") || resultStr.Contains("请登录")))
                {
                    MessageBoxEx.Show("请登录后使用!");
                    LoginUserInfo.CurrentUser = null;
                    b_SignOutEvent = true;
                }
                if (resultStr.Contains("0002") && resultStr.Contains("无权访问"))
                {
                    MessageBoxEx.Show("请重新登录!");
                    LoginUserInfo.CurrentUser = null;
                    b_SignOutEvent = true;
                }
                if (b_SignOutEvent && SignOutEvent != null)
                {
                    SignOutEvent(null, null);
                }
            }
            else if (resultStr.Contains("200"))
            {
                b_SignOutEvent = false;
            }
            return resultStr;
        }

        /// <summary>
        /// 用于某些接口提交数据,需要将json串直接放到body中的情况(类似saveDraftStatistic接口)
        /// </summary>
        /// <param name="url"></param>
        /// <param name="json"></param>
        /// <returns></returns>
        public static string HttpPostRestRequest(string url, string json)
        {
            try
            {
                var client = new RestClient(url)
                {
                    Timeout = -1
                };
                var m = Method.POST;
                var request = new RestRequest(m);
                if (!string.IsNullOrEmpty(LoginUserInfo.CurrentUser.token))
                {
                    request.AddHeader("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    try
                    {
                        var parms = url.Split('&');
                        foreach (var p in parms)
                        {
                            if (p.Contains("token"))
                            {
                                request.AddHeader("token", p.Split('=')[1]);
                            }
                        }
                    }
                    catch { }
                }
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("user-work-bench", "workBench");
                var mac = Tool.GetMacByNetworkInterface();
                request.AddHeader("code", mac);
                request.AddParameter("application/json", json, ParameterType.RequestBody);

                IRestResponse response = client.Execute(request);
                if (!b_SignOutEvent)
                {
                    if (response.Content.Contains("异地登") && response.Content.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("超时登") && response.Content.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("6011") && (response.Content.Contains("登录后使用") || response.Content.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("0002") && (response.Content.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (response.Content.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return response.Content;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpRestRequest", ex.StackTrace);
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }

        public static async Task<string> HttpPostRestRequestAwait(string url, string json)
        {
            try
            {
                var client = new RestClient(url)
                {
                    Timeout = -1
                };
                var m = Method.POST;
                var request = new RestRequest(m);
                if (!string.IsNullOrEmpty(LoginUserInfo.CurrentUser.token))
                {
                    request.AddHeader("token", LoginUserInfo.CurrentUser.token);
                }
                else
                {
                    try
                    {
                        var parms = url.Split('&');
                        foreach (var p in parms)
                        {
                            if (p.Contains("token"))
                            {
                                request.AddHeader("token", p.Split('=')[1]);
                            }
                        }
                    }
                    catch { }
                }
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("user-work-bench", "workBench");
                var mac = Tool.GetMacByNetworkInterface();
                request.AddHeader("code", mac);
                request.AddParameter("application/json", json, ParameterType.RequestBody);

                IRestResponse response = client.Execute(request);
                if (!b_SignOutEvent)
                {
                    if (response.Content.Contains("异地登") && response.Content.Contains("5011"))
                    {
                        MessageBoxEx.Show("账号异地登录,请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("超时登") && response.Content.Contains("4011"))
                    {
                        MessageBoxEx.Show("超时登陆!请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("6011") && (response.Content.Contains("登录后使用") || response.Content.Contains("请登录")))
                    {
                        MessageBoxEx.Show("请登录后使用!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (response.Content.Contains("0002") && (response.Content.Contains("无权访问")))
                    {
                        MessageBoxEx.Show("请重新登录!");
                        LoginUserInfo.CurrentUser = null;
                        b_SignOutEvent = true;
                    }
                    if (b_SignOutEvent && SignOutEvent != null)
                    {
                        SignOutEvent(null, null);
                    }
                }
                else if (response.Content.Contains("200"))
                {
                    b_SignOutEvent = false;
                }
                return response.Content;
            }
            catch (Exception ex)
            {
                LogManager.WriteError("HttpRestRequest", ex.StackTrace);
                return "{  code:404 ,data: '',msg: '" + ex.Message + "'}";
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
public static T Post<T>(string url, string data, string staffId, string contentType) { try { byte[] bytes = Encoding.UTF8.GetBytes(data); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); string timeStamp = ApiHelper.GetTimeStamp(); string random = ApiHelper.GetRandom(); httpWebRequest.Headers.Add("staffid", staffId.ToString()); httpWebRequest.Headers.Add("timestamp", timeStamp); httpWebRequest.Headers.Add("nonce", random); //ResultMsg signToken = ApiHelper.GetToken(url, staffId); // httpWebRequest.Headers.Add("signature", ApiHelper.GetSignature(timeStamp, random, staffId, data, signToken)); httpWebRequest.Headers.Add("jwtcookie", GetJwt(url, data));//cwj 直接通过jwt验证身份 httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = (long)bytes.Length; httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"; httpWebRequest.ContentType = contentType; Stream requestStream = httpWebRequest.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); httpWebRequest.Timeout = 300000; httpWebRequest.Headers.Set("Pragma", "no-cache"); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream responseStream = httpWebResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8); string text = streamReader.ReadToEnd(); requestStream.Close(); streamReader.Close(); responseStream.Close(); httpWebRequest.Abort(); httpWebResponse.Close(); return JsonConvert.DeserializeObject<T>(text); } catch (Exception) { throw; } }
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刘彦宏吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值