12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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<ErpHttpClient> _logger;
- public ErpHttpClient(HttpClient httpClient, IOptions<ERPOption> option, ILogger<ErpHttpClient> 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<string> HttpGetAsync(string url)
- {
- var response = await Client.GetAsync(url);
- return await response.Content.ReadAsStringAsync();
- }
- public async Task<T> HttpGetAsync<T>(string Url)
- {
- var str = await HttpGetAsync(Url);
- return JsonConvert.DeserializeObject<T>(str, this._option.SerializerSettings);
- }
- public async Task<string> 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<T> PostAsync<T>(string Url, object Data)
- {
- var str = await HttpPostAsync(Url, Data);
- return JsonConvert.DeserializeObject<T>(str, this._option.SerializerSettings);
- }
- public async Task<T> HttpPostAsync<T>(string Url, object Data = null)
- {
- var result = await PostAsync<ResponseModel<T>>(Url, Data);
- if (result.ErrCode != 0)
- {
- throw new ErpException(result.ErrCode, result.ErrMsg);
- }
- return result.Data;
- }
- }
- }
|