/// <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("服务内部错误"); } } }
/// <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("服务内部错误"); } } }