using DoWhatPlc; using Newtonsoft.Json; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace DtWebApi { public class OutGUID { /// /// 2021.10.25.LLX /// /// public static string Get_CS_GUID() { return Guid.NewGuid().ToString().ToUpper(); } } public partial class CallWebApi { public string InvokeWebapiString(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); string result = task.Result; return result; } public DataTable InvokeWebapiDataTable(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); var result = task.Result; //反序列化Json DataTable dt = new DataTable(); dt = JsonConvert.DeserializeObject(task.Result); return dt; } public DataSet InvokeWebapiDataSet(string controlStr, string actionStr, string api, string type, Dictionary dics) { DataSet ds = new DataSet(); try { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); var result = task.Result; //反序列化Json ds = JsonConvert.DeserializeObject(task.Result); } catch { } return ds; } public SqlDataReader InvokeWebapiSqlDataReader(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); var result = task.Result; //反序列化Json SqlDataReader dr; dr = JsonConvert.DeserializeObject(task.Result); return dr; } public bool InvokeWebapiBool(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); string result = task.Result; return Convert.ToBoolean(result); } public int InvokeWebapiInt(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); string result = task.Result; return Convert.ToInt32(result); } #region WinFrom调用webapi接口通用方法 public EngineValue InvokeWebapiEngineValue(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rt = JsonConvert.DeserializeObject(task.Result); return rt; } public ReturnValueObject InvokeWebapiReturnValueObject(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rs = JsonConvert.DeserializeObject(task.Result); if (rs == null) return null; var ro = rs.ReturnValueToObject(); return ro; } public List InvokeWebapiReturnValueObjectList(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rsList = JsonConvert.DeserializeObject< List < ReturnValueString > >(task.Result); List roList = new List(); foreach(var rs in rsList) { var ro = rs.ReturnValueToObject(); roList.Add(ro); } return roList; } public void InvokeWebapiWritePLC(string controlStr, string actionStr, string api, string type, Dictionary dics) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); } //public List InvokeWebapiReturnValueObjectList(string controlStr, string actionStr, string api, string type, Dictionary dics) //{ // string url = GetUrlWebApi(controlStr, actionStr, dics); // Task task = InvokeWebapi(url, api, type, dics); // //反序列化Json // var rtList = JsonConvert.DeserializeObject>(task.Result); // List roList = new List(); // foreach(var rt in rtList) // { // var ro = rt.ReturnValueToObject(); // roList.Add(ro); // } // return roList; //} public HashtableList InvokeWebapiHashtableList(string controlStr, string actionStr, string api, string type, Dictionary dics = null) { try { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rtList = JsonConvert.DeserializeObject(task.Result); return rtList; } catch { return new HashtableList(); } } public List InvokeWebapiListTagFormat(string controlStr, string actionStr, string api, string type, Dictionary dics=null) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rtList = JsonConvert.DeserializeObject>(task.Result); return rtList; } public QualityDataSaveList InvokeWebapiQualityDataSaveList(string controlStr, string actionStr, string api, string type, Dictionary dics = null) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rtList = JsonConvert.DeserializeObject(task.Result); return rtList; } public List InvokeWebapiListString(string controlStr, string actionStr, string api, string type, Dictionary dics = null) { try { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rtList = JsonConvert.DeserializeObject>(task.Result); return rtList; } catch(Exception err) { return new List(); } } public ConcurrentDictionary InvokeWebapiConcurrentDictionaryTagFormat(string controlStr, string actionStr, string api, string type, Dictionary dics = null) { string url = GetUrlWebApi(controlStr, actionStr, dics); Task task = InvokeWebapi(url, api, type, dics); //反序列化Json var rtList = JsonConvert.DeserializeObject>(task.Result); return rtList; } private async Task InvokeWebapi(string url, string api, string type, Dictionary dics) { string result = string.Empty; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("authorization", "Basic YWRtaW46cGFzc3dvcmRAcmljZW50LmNvbQ==");//basic编码后授权码 client.BaseAddress = new Uri(url); client.Timeout = TimeSpan.FromSeconds(510); if (type.ToLower() == "put") { HttpResponseMessage response; //包含复杂类型 if (dics.Keys.Contains("input")) { if (dics != null) { foreach (var item in dics.Keys) { api = api.Replace(item, dics[item]).Replace("{", "").Replace("}", ""); } } var contents = new StringContent(dics["input"], Encoding.UTF8, "application/json"); response = client.PutAsync(api, contents).Result; if (response.IsSuccessStatusCode) { result = await response.Content.ReadAsStringAsync(); return result; } return result; } var content = new FormUrlEncodedContent(dics); response = client.PutAsync(api, content).Result; if (response.IsSuccessStatusCode) { result = await response.Content.ReadAsStringAsync(); return result; } } else if (type.ToLower() == "post") { var content = new FormUrlEncodedContent(dics); HttpResponseMessage response = client.PostAsync(api, content).Result; if (response.IsSuccessStatusCode) { result = await response.Content.ReadAsStringAsync(); return result; } } else if (type.ToLower() == "get") { HttpResponseMessage response = client.GetAsync(api).Result; if (response.IsSuccessStatusCode) { result = await response.Content.ReadAsStringAsync(); return result; } } else { return result; } return result; } #endregion public static string Url_WebApi = System.Configuration.ConfigurationManager.AppSettings["Url_WebApi"]; private string GetUrlWebApi(string controlStr,string actionStr,Dictionary dic=null) { string url = Url_WebApi + "//api//" + controlStr + "//"+actionStr; //string url = Url_WebApi + "//api//" + controlStr+"1" + "//"+actionStr; StringBuilder builder = new StringBuilder(); int i = 0; if(dic!=null) { foreach (var item in dic) { string item_Value = Utils.UrlEncode(item.Value); if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item_Value); i++; } if (i > 0) { url = url + "//?" + builder.ToString(); } } return url; } private string GetUrlWebApi(string controlStr, string actionStr) { string url = Url_WebApi + "//api//" + controlStr + "//" + actionStr; return url; } #region 获取APP升级版本信息 //public List GetVersList() //{ // string api = ""; // List list = new List(); // string url = "http://域名/api/Config/GetVersionList?ClientType=android"; // Dictionary dics = new Dictionary(); // Task task = InvokeWebapi(url, api, "GET", dics); // string result = task.Result; // #region 解析结果集 // if (result != null) // { // JObject jsonObj = null; // jsonObj = JObject.Parse(result); // DataInfo info = new DataInfo(); // info.statusCode = Convert.ToInt32(jsonObj["statusCode"]); // info.message = jsonObj["message"].ToString(); // if (info.statusCode == 1) // { // JArray jlist = JArray.Parse(jsonObj["data"].ToString()); // for (int i = 0; i < jlist.Count; ++i) //遍历JArray // { // Versions ver = new Versions(); // JObject tempo = JObject.Parse(jlist[i].ToString()); // ver.VersionId = Convert.ToInt32(tempo["versionId"]); // ver.VersionNumber = tempo["versionNumber"].ToString(); // ver.Description = tempo["description"].ToString(); // ver.FilePath = tempo["filePath"].ToString(); // ver.ClientType = tempo["clientType"].ToString(); // ver.IsForce = Convert.ToInt32(tempo["isForce"]); // list.Add(ver); // } // } // } // #endregion // return list; //} #endregion } public class Post { public static string Postring(string url, Dictionary dic) { string result = ""; //url = "http://172.16.22.15:8000/" + url; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.Proxy = null; req.KeepAlive = false; #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(); } return result; } public static string Postring1(string url, string token, Dictionary dic) { string results = ""; //url = "http://172.16.22.15:8000/" + url; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.Headers.Add("Authorization", "Bearer " + token); #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; try { 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)) { results = reader.ReadToEnd(); } return results; } catch (Exception e) { Console.WriteLine(e.Message); return e.Message; throw; } } } }