ErpHttpClient.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net.Http;
  4. using System.Net.Http.Headers;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Microsoft.Extensions.Logging;
  8. using Microsoft.Extensions.Options;
  9. using Newtonsoft.Json;
  10. namespace NXWMS.Service.ERP
  11. {
  12. public class ErpHttpClient
  13. {
  14. public HttpClient Client { get; private set; }
  15. private ERPOption _option;
  16. private ILogger<ErpHttpClient> _logger;
  17. public ErpHttpClient(HttpClient httpClient, IOptions<ERPOption> option, ILogger<ErpHttpClient> logger)
  18. {
  19. _option = option.Value;
  20. Client = httpClient;
  21. _logger = logger;
  22. Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  23. Client.BaseAddress = new Uri(_option.BaseUrl);
  24. }
  25. public async Task<string> HttpGetAsync(string url)
  26. {
  27. var response = await Client.GetAsync(url);
  28. return await response.Content.ReadAsStringAsync();
  29. }
  30. public async Task<T> HttpGetAsync<T>(string Url)
  31. {
  32. var str = await HttpGetAsync(Url);
  33. return JsonConvert.DeserializeObject<T>(str, this._option.SerializerSettings);
  34. }
  35. public async Task<string> HttpPostAsync(string url, object postData = null)
  36. {
  37. string strPost;
  38. strPost = JsonConvert.SerializeObject(postData, this._option.SerializerSettings);
  39. var httpContent = new StringContent(strPost, Encoding.UTF8);
  40. _logger.LogInformation("http Post Url:{0} \rn {1}", url, strPost);
  41. httpContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json");
  42. var response = await Client.PostAsync(url, httpContent);
  43. return await response.Content.ReadAsStringAsync();
  44. }
  45. private async Task<T> PostAsync<T>(string Url, object Data)
  46. {
  47. var str = await HttpPostAsync(Url, Data);
  48. return JsonConvert.DeserializeObject<T>(str, this._option.SerializerSettings);
  49. }
  50. public async Task<T> HttpPostAsync<T>(string Url, object Data = null)
  51. {
  52. var result = await PostAsync<ResponseModel<T>>(Url, Data);
  53. if (result.ErrCode != 0)
  54. {
  55. throw new ErpException(result.ErrCode, result.ErrMsg);
  56. }
  57. return result.Data;
  58. }
  59. }
  60. }