BusinessModel.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using economy.Helpers;
  2. using System.Text;
  3. using System.Text.Json;
  4. using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
  5. namespace economy.Models.Business.Number
  6. {
  7. /**
  8. * http://api.odcloud.kr/api/nts-businessman/v1/status?serviceKey=vQz8tIxrdhjerG6DE1w1hcVEli5S27LtIsCvx0axiieZmRgOpB4vToQ77VmvknAkIC9YjxlPx2gDZcl06S88Xw%3D%3D&returnType=XML
  9. */
  10. public class BusinessModel
  11. {
  12. private readonly NTS_API _NTS_API;
  13. public BusinessModel(NTS_API NTS_API)
  14. {
  15. _NTS_API = NTS_API;
  16. }
  17. // 사업자 상태 조회
  18. public async Task<Number.Response> GetNumberInfo(string query)
  19. {
  20. Number.Response parsedData = new();
  21. try
  22. {
  23. var uriBuilder = new UriBuilder(_NTS_API.APIUrl)
  24. {
  25. Path = "/api/nts-businessman/v1/status",
  26. Query = $"serviceKey={_NTS_API.APIKey}&returnType=XML"
  27. };
  28. query = query.Trim().Replace("-", "");
  29. var jsonData = JsonSerializer.Serialize(new
  30. {
  31. b_no = new[] { query }
  32. });
  33. var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
  34. var response = await _NTS_API.httpClient.PostAsync(uriBuilder.Uri, content);
  35. if (response.IsSuccessStatusCode)
  36. {
  37. var xmlString = await response.Content.ReadAsStringAsync();
  38. parsedData = await Common.ParseXmlDataAsync<Number.Response>(xmlString);
  39. if (parsedData.StatusCode == "OK")
  40. {
  41. return parsedData;
  42. }
  43. }
  44. response.EnsureSuccessStatusCode();
  45. }
  46. catch (HttpRequestException e)
  47. {
  48. Console.WriteLine($"Request error: {e.Message}");
  49. }
  50. return parsedData;
  51. }
  52. }
  53. }