| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701 |
- using System;
- using System.IO;
- using System.Net.Http.Headers;
- using System.Net.Http;
- using System.Net;
- using System.Text;
- using Newtonsoft.Json;
- using ivf_tl_Entity.Entity;
- using ivf_tl_Entity.Entity.Result;
- using ivf_tl_Entity.Enums;
- using System.Windows.Markup;
- using System.Security.Policy;
- using System.Reflection;
- using System.Collections.Generic;
- using System.Diagnostics;
- using log4net.Layout;
- using ivf_tl_Entity.ControlEntity;
- using System.Collections.ObjectModel;
- using System.Threading.Tasks;
- using System.Linq;
- using System.Threading;
- using System.Web;
- namespace ivf_tl_Service
- {
- public class HttpServiceCall
- {
- private static string mUrl = "";
- private static string token = "";
- private string Account { get; set; } = "admin";
- private string PassWord { get; set; } = "123456";
- private HttpClient HttpClient { get; set; }
- private LogService LogService { get; set; }
- //我这边超时
- private TimeSpan AsyncTimeout = new TimeSpan(0, 0, 10);
- //服务器超时
- TimeSpan ServiceTimeout = new TimeSpan(0, 0, 12);
- public HttpServiceCall(string baseUrl, LogService _LogService)
- {
- mUrl = baseUrl;
- LogService = _LogService;
- #if DEBUG
- AsyncTimeout = new TimeSpan(0, 30, 0);
- ServiceTimeout = new TimeSpan(0, 30, 0);
- #endif
- HttpClient = new HttpClient()
- {
- BaseAddress = new Uri(mUrl),
- Timeout = ServiceTimeout
- };
- HttpClient.DefaultRequestHeaders.ExpectContinue = false;
- System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
- }
- public string UrlEncode(string url)
- {
- try
- {
- return url.Replace("+", "%2B").Replace(",", "%2C");
- url = url.Replace("+", "%2B").Replace(" ", "%20");
- return HttpUtility.UrlEncode(url);
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"处理url路径:[url:{url}]", LogEnum.RunException);
- return url;
- }
- }
- public UserInfo Login(string account, string pass)
- {
- string funcName = "HttpServiceCall.Login";
- try
- {
- Account = account;
- PassWord = pass;
- string json = callWebServiceNoToken("/api/gateway/auth/login", JsonConvert.SerializeObject(new { account = Account, password = PassWord }));
- if (string.IsNullOrEmpty(json))
- {
- token = null;
- return null;
- }
- var result = JsonConvert.DeserializeObject<ResultEntity<LoginDataResult>>(json);
- if (!result.success)
- {
- LogService.TLLog($"{funcName}服务器返回失败:{json}", LogEnum.RunError);
- token = null;
- return null;
- }
- if (result.data != null)
- {
- token = result.data.token;
- return result.data.userInfo;
- }
- LogService.TLLog($"{funcName}返回成功,但是没有数据:{json}", LogEnum.RunError);
- token = null;
- return null;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"GetToken异常", LogEnum.RunException);
- token = null;
- return null;
- }
- }
- public string GetToken()
- {
- string funcName = "HttpServiceCall.GetToken";
- try
- {
- if (!string.IsNullOrEmpty(token)) return token;
- string json = callWebServiceNoToken("/api/gateway/auth/login", JsonConvert.SerializeObject(new { account = Account, password = PassWord }));
- if (string.IsNullOrEmpty(json)) return null;
- var result = JsonConvert.DeserializeObject<ResultEntity<LoginDataResult>>(json);
- if (!result.success)
- {
- LogService.TLLog($"{funcName}接口返回失败 {json}", LogEnum.RunError);
- token = null;
- return null;
- }
- if (result.data != null)
- {
- token = result.data.token;
- return token;
- }
- LogService.TLLog($"{funcName}返回成功但是无数据 {json}", LogEnum.RunError);
- token = null;
- return token;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, funcName, LogEnum.RunException);
- token = null;
- return null;
- }
- }
- /// <summary>
- /// 根据字典Type查询 - 不含根节点
- /// </summary>
- /// <param name="queryType"></param>
- public List<FertilizationTypeEntity> QueryDictionaryByTypeApi(string queryType)
- {
- string funcName = "HttpServiceCall.QueryDictionaryByTypeApi";
- try
- {
- string url = "/api/businessManage/pc/dictionary/queryDictionaryByType";
- string resultString = callWebService(url, JsonConvert.SerializeObject(new { type = queryType }));
- if (string.IsNullOrEmpty(resultString)) return new List<FertilizationTypeEntity>();
- ResultEntity<List<FertilizationTypeEntity>> rs = JsonConvert.DeserializeObject<ResultEntity<List<FertilizationTypeEntity>>>(resultString);
- if (!rs.success)
- {
- LogService.TLLog($"{funcName}接口返回失败 {resultString}", LogEnum.RunError);
- return new List<FertilizationTypeEntity>();
- }
- if (rs.data != null) return rs.data;
- //LogService.TLLog($"{funcName}返回成功但是无数据 {resultString}", LogEnum.RunError);
- return new List<FertilizationTypeEntity>();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, funcName, LogEnum.RunException);
- return new List<FertilizationTypeEntity>();
- }
- }
- public string UpdatePasswordApi(string password, string newPassword, string verifyPassword)
- {
- string funcName = "UpdatePasswordApi";
- try
- {
- string url = "/api/gateway/auth/user/updatePassword";
- string resultString = callWebService(url, JsonConvert.SerializeObject(new { password, newPassword, verifyPassword }));
- if (string.IsNullOrEmpty(resultString)) return "服务器返回空";
- var rs = JsonConvert.DeserializeObject<ResultEntity>(resultString);
- if (!rs.success)
- {
- LogService.TLLog($"{funcName}接口返回失败 {resultString}", LogEnum.RunError);
- return rs.message;
- }
- return null;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, funcName, LogEnum.RunException);
- return ex.Message;
- }
- }
- public List<EnvironmentTemperatureEntity> GetEnvironmentTemperatureApi()
- {
- string funcName = "GetEnvironmentTemperatureApi";
- try
- {
- string url = "/api/tl/control/tlInfo/getEnvironmentTemperature";
- string resultString = callWebService(url);
- if (string.IsNullOrEmpty(resultString)) return new List<EnvironmentTemperatureEntity>();
- var rs = JsonConvert.DeserializeObject<ResultEntity<List<EnvironmentTemperatureEntity>>>(resultString);
- if (!rs.success)
- {
- LogService.TLLog($"{funcName}接口返回失败 {resultString}", LogEnum.RunError);
- return new List<EnvironmentTemperatureEntity>();
- }
- if (rs.data != null && rs.data.Any()) return rs.data;
- //LogService.TLLog($"{funcName}接口返回成功但是无数据 {resultString}", LogEnum.RunError);
- return new List<EnvironmentTemperatureEntity>();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, funcName, LogEnum.RunException);
- return new List<EnvironmentTemperatureEntity>();
- }
- }
- public string GetDownLoadFileName(string url)
- {
- if (string.IsNullOrEmpty(GetToken())) return null;
- string traceId = Guid.NewGuid().ToString("N");
- url = UrlEncode(url);
- using var cts = new CancellationTokenSource(AsyncTimeout);
- using var request = new HttpRequestMessage(HttpMethod.Get, url);
- try
- {
- request.Headers.Add("token", token);
- request.Headers.Add("traceId", traceId);
- using var responseMessage = HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).Result;
- if (!responseMessage.IsSuccessStatusCode)
- {
- LogService.TLLog($"GetDownLoadFileName访问服务器失败", LogEnum.RunError);
- return null;
- }
- if (responseMessage.Content.Headers.ContentDisposition == null) return null;
- ContentDispositionHeaderValue contentDisposition = responseMessage.Content.Headers.ContentDisposition;
- string fileName = null;
- if (!string.IsNullOrEmpty(contentDisposition.FileNameStar))
- {
- fileName = contentDisposition.FileNameStar;
- }
- if (!string.IsNullOrEmpty(contentDisposition.FileName))
- {
- fileName = contentDisposition.FileName;
- }
- if (!string.IsNullOrEmpty(fileName))
- {
- return fileName.Trim('\"');
- }
- return null;
- }
- catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
- {
- LogService.TLLog($"请求超时 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return null;
- }
- catch (HttpRequestException ex)
- {
- LogService.TLLog($"网络异常 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return null;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
- return null;
- }
- }
- public async Task<int> DownLoadFileAsync(string url, string newFileName)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return 0;
- url = UrlEncode(url);
- using var requestNew = new HttpRequestMessage(HttpMethod.Get, url);
- requestNew.Headers.Add("token", token);
- return await HttpClientDownLoad(requestNew, url, newFileName).ConfigureAwait(false);
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"下载文件异常:[url:{url}]", LogEnum.RunException);
- return -1;
- }
- }
- public async Task<int> DownLoadFileAsync(string url, string newFileName, string body)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return 0;
- url = UrlEncode(url);
- using var requestNew = new HttpRequestMessage(HttpMethod.Get, url);
- using HttpContent httpContent1 = new StringContent(body, Encoding.UTF8, "application/json");
- requestNew.Content = httpContent1;
- requestNew.Headers.Add("token", token);
- return await HttpClientDownLoad(requestNew, url, newFileName).ConfigureAwait(false);
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"下载文件异常:[url:{url}]", LogEnum.RunException);
- return -1;
- }
- }
- public byte[] GetImageByteApi(string imageUrl)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return null;
- imageUrl = UrlEncode(imageUrl);
- using var requestNew = new HttpRequestMessage(HttpMethod.Get, imageUrl);
- requestNew.Headers.Add("token", token);
- return HttpClientByte(requestNew, imageUrl).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"获取图片数据异常:[url:{imageUrl}]", LogEnum.RunException);
- return null;
- }
- }
- public string callWebService(string url)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return null;
- using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
- requestNew.Headers.Add("token", token);
- return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}]", LogEnum.RunException);
- return null;
- }
- }
- public string callWebService(string url, bool b)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return null;
- using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
- using HttpContent httpContent1 = new StringContent("", Encoding.UTF8, "application/x-www-form-urlencoded");
- requestNew.Content = httpContent1;
- requestNew.Headers.Add("token", token);
- return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}]", LogEnum.RunException);
- return null;
- }
- }
- public string callWebService(string url, string body)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return null;
- using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
- using HttpContent httpContent1 = new StringContent(body, Encoding.UTF8, "application/json");
- requestNew.Content = httpContent1;
- requestNew.Headers.Add("token", token);
- return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}],body:{body}", LogEnum.RunException);
- return null;
- }
- }
- public string callWebService(string url, Dictionary<string, string> body)
- {
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return null;
- using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
- using HttpContent httpContent1 = new FormUrlEncodedContent(body);
- requestNew.Content = httpContent1;
- requestNew.Headers.Add("token", token);
- return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}],body:{JsonConvert.SerializeObject(body)}", LogEnum.RunException);
- return null;
- }
- }
- public string callWebServiceUpLoad(string url, Dictionary<string, string> body, byte[] fileBtye, string fileName)
- {
- try
- {
- fileName = HttpUtility.UrlEncode(fileName);
- if (string.IsNullOrEmpty(GetToken())) return null;
- using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
- using (var content = new MultipartFormDataContent())
- {
- // 添加表单字段
- if (body.Any())
- {
- foreach (var item in body)
- {
- content.Add(new StringContent(item.Value), item.Key);
- }
- }
- // 添加文件内容
- var fileContent = new ByteArrayContent(fileBtye);
- fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
- {
- Name = "reportHospitalLogoFile",
- FileName = fileName
- };
- //FileName = HttpUtility.UrlEncode(fileName)
- content.Add(fileContent);
- requestNew.Content = content;
- requestNew.Headers.Add("token", token);
- return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}],body:{JsonConvert.SerializeObject(body)}", LogEnum.RunException);
- return null;
- }
- }
- public string callWebServiceNoToken(string url, string body)
- {
- try
- {
- using var requestNew = new HttpRequestMessage(HttpMethod.Post, url);
- using HttpContent httpContent1 = new StringContent(body, Encoding.UTF8, "application/json");
- requestNew.Content = httpContent1;
- return HttpClientSendAsync(requestNew, url).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}],body:{body}", LogEnum.RunException);
- return null;
- }
- }
- /// <summary>
- /// 基础实现
- /// </summary>
- /// <param name="request"></param>
- /// <param name="url"></param>
- /// <returns></returns>
- public async Task<string> HttpClientSendAsync(HttpRequestMessage request, string url)
- {
- string traceId = Guid.NewGuid().ToString("N");
- string result;
- using var cts = new CancellationTokenSource(AsyncTimeout);
- try
- {
- request.Headers.Add("traceId", traceId);
- using var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).ConfigureAwait(false);
- if (!response.IsSuccessStatusCode)
- {
- LogService.TLLog($"HttpClientSendAsync访问服务器失败 [url:{url}],[TraceID:{traceId}][code:{response.StatusCode}]", LogEnum.RunError);
- return null;
- }
- return response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
- {
- LogService.TLLog($"HttpClientSendAsync请求超时 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return null;
- }
- catch (HttpRequestException ex)
- {
- LogService.ExceptionLog(ex, $"HttpClientSendAsync网络异常 [url:{url}],[TraceID:{traceId}]", LogEnum.RunException);
- return null;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"HttpClientSendAsync访问服务器异常:[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
- return null;
- }
- }
- public async Task<string> HttpClientSendAsyncStream(HttpRequestMessage request, string url)
- {
- string result = string.Empty;
- string traceId = Guid.NewGuid().ToString("N");
- using var cts = new CancellationTokenSource(AsyncTimeout);
- try
- {
- request.Headers.Add("traceId", traceId);
- using var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).ConfigureAwait(false);
- if (!response.IsSuccessStatusCode)
- {
- LogService.TLLog($"HttpClientSendAsyncStream访问服务器失败 [url:{url}],[TraceID:{traceId}][code:{response.StatusCode}]", LogEnum.RunError);
- return null;
- }
- var buffer = new char[4096];
- int bytesRead;
- var StringBuilderResult = new StringBuilder();
- using (var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
- {
- using (var reader = new StreamReader(stream, Encoding.UTF8))
- {
- while ((bytesRead = await reader.ReadAsync(buffer).ConfigureAwait(false)) > 0)
- {
- StringBuilderResult.Append(buffer, 0, bytesRead);
- }
- }
- }
- result = StringBuilderResult.ToString();
- StringBuilderResult.Clear();
- return result;
- }
- catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
- {
- LogService.TLLog($"HttpClientSendAsyncStream请求超时 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return null;
- }
- catch (HttpRequestException ex)
- {
- LogService.ExceptionLog(ex, $"HttpClientSendAsyncStream网络异常 [url:{url}],[TraceID:{traceId}]", LogEnum.RunException);
- return null;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"HttpClientSendAsyncStream访问服务器异常:[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
- return null;
- }
- }
- public async Task<byte[]> HttpClientByte(HttpRequestMessage request, string url)
- {
- string traceId = Guid.NewGuid().ToString("N");
- string result;
- using var cts = new CancellationTokenSource(AsyncTimeout);
- try
- {
- request.Headers.Add("traceId", traceId);
- using var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).ConfigureAwait(false);
- if (!response.IsSuccessStatusCode)
- {
- LogService.TLLog($"HttpClientByte访问服务器失败 [url:{url}],[TraceID:{traceId}][code:{response.StatusCode}]", LogEnum.RunError);
- return null;
- }
- return response.Content.ReadAsByteArrayAsync().ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
- {
- LogService.TLLog($"HttpClientByte请求超时 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return null;
- }
- catch (HttpRequestException ex)
- {
- LogService.TLLog($"HttpClientByte网络异常 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return null;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"HttpClientByte访问服务器异常:[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
- return null;
- }
- }
- public async Task<int> HttpClientDownLoad(HttpRequestMessage request, string url, string newFileName)
- {
- string traceId = Guid.NewGuid().ToString("N");
- using var cts = new CancellationTokenSource(AsyncTimeout);
- try
- {
- request.Headers.Add("traceId", traceId);
- using var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cts.Token).ConfigureAwait(false);
- if (!response.IsSuccessStatusCode)
- {
- LogService.TLLog($"HttpClientDownLoad访问服务器失败 [url:{url}],[TraceID:{traceId}][code:{response.StatusCode}]", LogEnum.RunError);
- return 0;
- }
- using (var fs = File.Create(newFileName))
- {
- using (var download = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
- {
- var buffer = new byte[4096];
- int bytesRead;
- while ((bytesRead = download.Read(buffer)) > 0)
- {
- await fs.WriteAsync(buffer, 0, bytesRead).ConfigureAwait(false);
- }
- }
- }
- return 1;
- }
- catch (TaskCanceledException ex) when (cts.IsCancellationRequested)
- {
- LogService.TLLog($"HttpClientDownLoad请求超时 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return -1;
- }
- catch (HttpRequestException ex)
- {
- LogService.TLLog($"HttpClientDownLoad网络异常 [url:{url}],[TraceID:{traceId}]", LogEnum.RunError);
- return -1;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"HttpClientDownLoad访问服务器异常:[url:{url}],[traceId:{traceId}],", LogEnum.RunException);
- return -1;
- }
- }
- #region
- public bool callWebService(string url, string body, string newFilePath)
- {
- string traceId = Guid.NewGuid().ToString("N");
- try
- {
- if (string.IsNullOrEmpty(GetToken())) return false;
- HttpContent httpContent = new StringContent(body);
- httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
- httpContent.Headers.ContentType.CharSet = "utf-8";
- CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
- cancellationTokenSource.CancelAfter(AsyncTimeout);
- var request = new HttpRequestMessage(HttpMethod.Post, url) { Content = httpContent };
- request.Headers.Add("token", token);
- request.Headers.Add("traceId", traceId);
- HttpResponseMessage responseMessage = HttpClient.SendAsync(request, cancellationTokenSource.Token).Result;
- if (responseMessage.StatusCode != HttpStatusCode.OK)
- {
- LogService.TLLog($"访问服务器失败:[url:{url}],[traceId:{traceId}],{body}", LogEnum.RunError);
- return false;
- }
- var resultStream = responseMessage.Content.ReadAsStreamAsync().Result;
- if (resultStream == null)
- {
- LogService.TLLog($"服务器返回空:[url:{url}],[traceId:{traceId}],{body}", LogEnum.RunError);
- return false;
- }
- using (var fs = File.Create(newFilePath))
- {
- resultStream.CopyTo(fs);
- fs.Close();
- }
- return true;
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:{url}],[traceId:{traceId}],{body}", LogEnum.RunException);
- return false;
- }
- }
- public async Task<byte[]> GetImageByteApi1(string imageUrl)
- {
- HttpResponseMessage responseMessage = null;
- string traceId = Guid.NewGuid().ToString("N");
- try
- {
- imageUrl = imageUrl.Replace("+", "%2B");
- imageUrl = imageUrl.Replace(",", "%2C");
- if (string.IsNullOrEmpty(GetToken())) return null;
- var request = new HttpRequestMessage(HttpMethod.Get, imageUrl);
- request.Headers.Add("token", token);
- request.Headers.Add("traceId", traceId);
- CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
- cancellationTokenSource.CancelAfter(10000);
- using (responseMessage = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationTokenSource.Token).ConfigureAwait(false))
- {
- if (responseMessage.StatusCode != HttpStatusCode.OK)
- {
- LogService.TLLog($"GetImageByteApi访问服务器失败:[url:{imageUrl}],[traceId:{traceId}]", LogEnum.RunError);
- return null;
- }
- return await responseMessage.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
- }
- }
- catch (Exception ex)
- {
- LogService.ExceptionLog(ex, $"访问服务器异常:[url:GetImageByteApi:{imageUrl}],[traceId:{traceId}]", LogEnum.RunException);
- return null;
- }
- }
- #endregion
- }
- }
|