using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json; namespace NXWMS.Service.ERP { public class ErpHttpClient { public HttpClient Client { get; private set; } private ERPOption _option; private ILogger _logger; public ErpHttpClient(HttpClient httpClient, IOptions option, ILogger logger) { _option = option.Value; Client = httpClient; _logger = logger; Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); Client.BaseAddress = new Uri(_option.BaseUrl); } public async Task HttpGetAsync(string url) { var response = await Client.GetAsync(url); return await response.Content.ReadAsStringAsync(); } public async Task HttpGetAsync(string Url) { var str = await HttpGetAsync(Url); return JsonConvert.DeserializeObject(str, this._option.SerializerSettings); } public async Task HttpPostAsync(string url, object postData = null) { string strPost; strPost = JsonConvert.SerializeObject(postData, this._option.SerializerSettings); var httpContent = new StringContent(strPost, Encoding.UTF8); _logger.LogInformation("http Post Url:{0} \rn {1}", url, strPost); httpContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json"); var response = await Client.PostAsync(url, httpContent); return await response.Content.ReadAsStringAsync(); } private async Task PostAsync(string Url, object Data) { var str = await HttpPostAsync(Url, Data); return JsonConvert.DeserializeObject(str, this._option.SerializerSettings); } public async Task HttpPostAsync(string Url, object Data = null) { var result = await PostAsync>(Url, Data); if (result.ErrCode != 0) { throw new ErpException(result.ErrCode, result.ErrMsg); } return result.Data; } } }