获取令牌

发布时间 2023-04-17 22:18:07作者: GroundSoft

优化前的代码:

         public async Task<string> getToken()
            {
                var model = new
                {
                    userName = shcutoken.userName,
                    userPassword = shcutoken.userPassword

                };

                string postDataStr = JsonConvert.SerializeObject(model);
                Utility.WriteLog("SHCU获取鉴权令牌:" + getTokenurl + DateTime.Now.ToString(), "");
                //1.准备URL
                var requestMessage = new HttpRequestMessage(HttpMethod.Post, $"{getTokenurl}");
                //2.准备请求体
                requestMessage.Content = new StringContent(postDataStr, System.Text.Encoding.UTF8, "application/json");
                //3、初始化一个HttpClient
                var _client = new HttpClient();
                string retString = "";
                try
                {
                    //ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
                    //ServicePointManager.ServerCertificateValidationCallback = true;
                    ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
                    var response = await _client.SendAsync(requestMessage).ConfigureAwait(false);
                    if (response.IsSuccessStatusCode)
                    {
                        var result = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                        retString = result;

                    }
                    else
                    {
                        retString = JsonConvert.SerializeObject(new { code = -999999, msg = response.StatusCode });
                    }
                    Utility.WriteLog("SHCU获取鉴权令牌返回:" + retString, "");
                }
                catch (Exception ex)
                {
                    Utility.WriteLog("SHCU获取鉴权令牌异常:" + ex.Message + ex.StackTrace, "");
                    return "SHCU获取鉴权令牌异常:url{" + getTokenurl + "}" + ex.StackTrace;
                }
                return retString;
            }

优化后的代码:

        public async Task<string> GetToken()
            {
                var model = new
                {
                    userName = shcutoken.userName,
                    userPassword = shcutoken.userPassword
                };

                var requestMessage = new HttpRequestMessage(HttpMethod.Post, getTokenurl);
                requestMessage.Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

                using (var client = new HttpClient())
                { 

                    try
                    {
                        ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
                        var response = await client.SendAsync(requestMessage);
                        response.EnsureSuccessStatusCode();
                        var result = await response.Content.ReadAsStringAsync();
                        Utility.WriteLog($"SHCU获取鉴权令牌返回:{result}", "");
                        return result;
                    }
                    catch (HttpRequestException ex)
                    {
                        Utility.WriteLog($"SHCU获取鉴权令牌异常:{ex.Message}{ex.StackTrace}", "");
                        return $"SHCU获取鉴权令牌异常:url{{{getTokenurl}}}{ex.StackTrace}";
                    }
                }

            }