Esempio n. 1
0
        /// <summary>
        /// 获取验证码 base64
        /// </summary>
        /// <returns></returns>
        private async Task <ValidateCodeModel> GetValidateBase64()
        {
            try
            {
                LoginViewState = await GetTrueUrl();

                string preUrl   = LoginUrl.Remove(LoginUrl.LastIndexOf('/'));
                var    response = await HttpHelper.CreateHttpResponse($"{preUrl}/CheckCode.aspx", LoginUrl);

                var model = new ValidateCodeModel()
                {
                    PreUrl         = preUrl,
                    LoginUrl       = LoginUrl,
                    LoginViewState = LoginViewState
                };
                MemoryStream ms = null;
                using (var stream = response.GetResponseStream())
                {
                    Byte[] buffer = new Byte[response.ContentLength];
                    int    offset = 0, actuallyRead = 0;
                    do
                    {
                        actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
                        offset      += actuallyRead;
                    }while (actuallyRead > 0);
                    ms = new MemoryStream(buffer);
                }
                response.Close();
                Image  image  = Image.FromStream(ms);
                Bitmap bitmap = new Bitmap(image);
                ms = new MemoryStream();
                bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();
                model.Arr         = arr;
                model.ImageStream = ms;
                model.ImageBase64 = Convert.ToBase64String(arr);
                return(model);
            }
            catch (Exception e)
            {
                if (e is NetworkInformationException)
                {
                    throw new ArgumentNullException("服务器忙,稍后再试");
                }
                else
                {
                    throw new ArgumentNullException("服务内部错误");
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 获取验证码 stream 形式
        /// </summary>
        /// <returns></returns>
        private async Task <ValidateCodeModel> GetValidate()
        {
            try
            {
                LoginViewState = await GetTrueUrl();

                string preUrl   = LoginUrl.Remove(LoginUrl.LastIndexOf('/'));
                var    response = await HttpHelper.CreateHttpResponse($"{preUrl}/CheckCode.aspx", LoginUrl);

                var model = new ValidateCodeModel()
                {
                    PreUrl         = preUrl,
                    LoginUrl       = LoginUrl,
                    LoginViewState = LoginViewState
                };
                using (var stream = response.GetResponseStream())
                {
                    Byte[] buffer = new Byte[response.ContentLength];
                    int    offset = 0, actuallyRead = 0;
                    do
                    {
                        actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
                        offset      += actuallyRead;
                    }while (actuallyRead > 0);
                    model.ImageStream = new MemoryStream(buffer);
                }
                response.Close();

                return(model);
            }
            catch (Exception e)
            {
                if (e is NetworkInformationException)
                {
                    throw new ArgumentNullException("服务器忙,稍后再试");
                }
                else
                {
                    throw new ArgumentNullException("服务内部错误");
                }
            }
        }