You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
4.2 KiB

1 year ago
10 months ago
1 year ago
  1. using Common;
  2. using Common.Helper;
  3. using log4net;
  4. using Newtonsoft.Json;
  5. using Newtonsoft.Json.Linq;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Net.Http;
  9. using System.Net.Http.Headers;
  10. using System.Text;
  11. namespace Business.TPApi
  12. {
  13. public class ThirdPartyAPI
  14. {
  15. private static int timeOut = 100;
  16. private string tp_base_url = GetStatic.ReadWebConfig("ThirdParty_Base_Url", "");
  17. private string apiAccessKey = GetStatic.ReadWebConfig("apiAccessKey", "");
  18. private readonly ILog _log = LogManager.GetLogger(typeof(ThirdPartyApi));
  19. public ResponseModel ThirdPartyApiGetDataOnly<RequestModel, ResponseModel>(RequestModel model, string api_url, out APIJsonResponse jsonResponse, string MethodType = "post")
  20. {
  21. ResponseModel _responseModel = default(ResponseModel);
  22. using (HttpClient httpClient = new HttpClient())
  23. {
  24. try
  25. {
  26. httpClient.BaseAddress = new Uri(tp_base_url);
  27. httpClient.DefaultRequestHeaders.Add("apiAccessKey", apiAccessKey);
  28. httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  29. httpClient.Timeout = new TimeSpan(0, 0, timeOut);
  30. HttpResponseMessage resp = new HttpResponseMessage();
  31. if (MethodType.ToLower().Equals("get"))
  32. resp = httpClient.GetAsync(api_url).Result;
  33. if (MethodType.ToLower().Equals("put"))
  34. {
  35. StringContent jbdContent = new StringContent(JsonConvert.SerializeObject(model).ToString(), Encoding.UTF8, "application/json");
  36. resp = httpClient.PutAsync(api_url, jbdContent).Result;
  37. }
  38. if (MethodType.ToLower().Equals("post"))
  39. {
  40. var jsonData = JsonConvert.SerializeObject(model).ToString();
  41. StringContent jbdContent = new StringContent(jsonData, Encoding.UTF8, "application/json");
  42. resp = httpClient.PostAsync(api_url, jbdContent).Result;
  43. }
  44. string resultData = resp.Content.ReadAsStringAsync().Result;
  45. if (resp.IsSuccessStatusCode)
  46. {
  47. var result = resp.Content.ReadAsStringAsync().Result;
  48. JObject a = JObject.Parse(result);
  49. _responseModel = a.ToObject<ResponseModel>();
  50. }
  51. else
  52. {
  53. _log.Debug("ThirdPartyApiGetDataOnly | RESPONSE: " + resp.ToString());
  54. ErrorJosn errorJson = JsonConvert.DeserializeObject<ErrorJosn>(resultData);
  55. APIJsonResponse jsonResponseData = JsonConvert.DeserializeObject<APIJsonResponse>(errorJson.Message);
  56. List<Data> data = JsonConvert.DeserializeObject<List<Data>>(jsonResponseData.Data.ToString());
  57. jsonResponse = new APIJsonResponse()
  58. {
  59. Id = jsonResponseData.Id,
  60. Msg = jsonResponseData.Msg,
  61. Data = data,
  62. Extra = jsonResponseData.Extra,
  63. Extra1 = jsonResponseData.Extra1,
  64. Extra2 = jsonResponseData.Extra2,
  65. Extra3 = jsonResponseData.Extra3,
  66. Extra4 = jsonResponseData.Extra4
  67. };
  68. }
  69. }
  70. catch (HttpRequestException ex)
  71. {
  72. jsonResponse = new APIJsonResponse()
  73. {
  74. ResponseCode = "999",
  75. Msg = ex.Message,
  76. Data = ex.Data,
  77. };
  78. _responseModel = default(ResponseModel);
  79. }
  80. };
  81. jsonResponse = new APIJsonResponse()
  82. {
  83. ResponseCode = "0",
  84. Msg = "Api Calling process successfully!"
  85. };
  86. return _responseModel;
  87. }
  88. }
  89. }