public async Task <IAnalyzeResult> UploadAndAnalyzeImage(byte[] imageBytes, params System.Enum[] features) { HttpClient client = new HttpClient(); //getToken string token = BaiduAccessToken.getAccessToken(Key, SecretKey).access_token; string uri = API + "?" + $"access_token={token}"; //getBase64 string base64String = Convert.ToBase64String(imageBytes); string jsonContent = this.threshold == null ? $"{{\"image\":\"{base64String}\"}}" : $"{{\"threshold\":\"{this.threshold}\",\"image\":\"{base64String}\"}}"; byte[] buffer = Encoding.Default.GetBytes(jsonContent); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "post"; request.KeepAlive = true; request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); string contentString = reader.ReadToEnd(); //HttpResponseMessage response; //using (HttpContent content = new StringContent(jsonContent)) //{ // // Make the REST API call. // response = await client.PostAsync(uri, content); //} //string contentString = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { throw new Exception(contentString); } // Get the JSON response. // Display the JSON response. Console.WriteLine("\nResponse:\n"); Console.WriteLine(VisCommonClass.JsonPrettyPrint(contentString)); return(JsonConvert.DeserializeObject <BaiduAnalyzeResult>(contentString)); }
public async Task <Response <Guest> > GetInfoFromCert(int hotelId, IFormCollection files) { if (files.Files.Count < 1) { return new Response <Guest>() { Status = StatusEnum.ValidateModelError, Massage = "没有上传图片", Data = null } } ; IFormFile file = files.Files[0]; string strBuffer = string.Empty; byte[] buffer; using (var stream = file.OpenReadStream()) { buffer = new byte[(int)stream.Length]; stream.Read(buffer, 0, (int)stream.Length); strBuffer = Convert.ToBase64String(buffer); } if (string.IsNullOrEmpty(strBuffer)) { return(new Response <Guest>() { Status = StatusEnum.ValidateModelError, Massage = "图片错误", Data = null }); } if (StaticData.BaiduToken == null || string.IsNullOrEmpty(StaticData.BaiduToken.access_token) || DateTime.Now > StaticData.BaiduToken.get_token_time.AddMinutes(StaticData.BaiduToken.expires_in).AddHours(-1) ) { string baiduTokenUri = $"{ Configuration.GetValue<string>("BaiduApi:tokenUri") }?grant_type={ Configuration.GetValue<string>("BaiduApi:grant_type") }&client_id={ Configuration.GetValue<string>("BaiduApi:client_id") }&client_secret={ Configuration.GetValue<string>("BaiduApi:client_secret") }"; string tokenResult = await Task.Run(() => { return(HttpHelper.HttpFormPostRequest(baiduTokenUri, "")); }); if (!string.IsNullOrEmpty(tokenResult)) { BaiduAccessToken token = JsonConvert.DeserializeObject <BaiduAccessToken>(tokenResult); if (token == null || string.IsNullOrEmpty(token.access_token)) { return(new Response <Guest>() { Status = StatusEnum.Error, Massage = "系统错误", Data = null }); } token.get_token_time = DateTime.Now; StaticData.BaiduToken = token; } else { return(new Response <Guest>() { Status = StatusEnum.Error, Massage = "系统错误", Data = null }); } } string manager = HttpContext.User.Identity.Name; string idcardUri = $"{ Configuration.GetValue<string>("BaiduApi:idcardUri") }?access_token={ StaticData.BaiduToken.access_token }"; int maxNum = Configuration.GetValue <int>("BaiduApi:maxNum"); KeyValuePair <Guest, string> guest = await Task.Run(() => { return(OcrHander.GetGuestInfoFromCertByBaidu(idcardUri, strBuffer, hotelId, manager, maxNum)); }); if (guest.Key == null) { return(new Response <Guest>() { Status = StatusEnum.ValidateModelError, Massage = guest.Value, Data = null }); } else { return(new Response <Guest>() { Status = StatusEnum.Success, Massage = "证件解析成功", Data = guest.Key }); } } }