using Newtonsoft.Json.Linq;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using Newtonsoft.Json;
using System.IO;
using System.Net;
private static readonly string DefaultUserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36";
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
``
public static string Base64Encode(Encoding encodeType, string source)
{
string encode = string.Empty;
byte[] bytes = encodeType.GetBytes(source);
try
{
encode = Convert.ToBase64String(bytes);
}
catch
{
encode = source;
}
return encode;
}`
public static string GetFormdata(Dictionary<string, string> dic, string ticks)
{
string Info = "";
string Head = string.Format("----------------------------{0}", ticks);
string Foot = string.Format("----------------------------{0}--", ticks);
foreach (var item in dic)
{
Info += string.Format("{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}\r\n", Head, item.Key, item.Value);
}
Info += Foot;
return Info;
}
#region formdata格式获取AccessToken
public static string PostAccessTokenByHttps()
{
try
{
string jsonlist = "";
string access_token = "";
string Ticks = DateTime.Now.Ticks.ToString();
string comid = System.Configuration.ConfigurationManager.AppSettings["HLYCompanyID"];
string comkey = System.Configuration.ConfigurationManager.AppSettings["HLYCompanyKey"];
string url = System.Configuration.ConfigurationManager.AppSettings["HLYJKTokenURL"];
HttpWebRequest request = null;
CookieContainer cookie = new CookieContainer();
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.CookieContainer = cookie;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "POST";
request.ContentType = string.Format("multipart/form-data; boundary=--------------------------{0}", Ticks);
request.UserAgent = DefaultUserAgent;
request.KeepAlive = true;
string source = comid + ':' + comkey;
**
string Authorization = "Basic " + Base64Encode(Encoding.UTF8, source);
request.Headers["Authorization"] = Authorization;
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("grant_type", "client_credentials");
dic.Add("scope", "write");
string Paramter = GetFormdata(dic, Ticks);
byte[] byteData = Encoding.UTF8.GetBytes(Paramter);
int length = byteData.Length;
request.ContentLength = length;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
using (Stream stream = request.GetRequestStream())
{
stream.Write(byteData, 0, byteData.Length);
}
var response = (HttpWebResponse)request.GetResponse();
using (StreamReader st = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
{
jsonlist = st.ReadToEnd().ToString();
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonlist);
access_token = jo["access_token"].ToString();
}
return access_token;
}
catch (Exception ex)
{
string err = ex.Message;
return string.Empty;
}
}
#endregion