Project files for the Acumatica Import for United Rentals
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

65 linhas
2.5 KiB

  1. using System;
  2. using System.Net;
  3. using System.Net.Http;
  4. using System.Net.Http.Headers;
  5. using Acumatica.RESTClient.Client;
  6. namespace uri_import.AClasses
  7. {
  8. public class RestService : IDisposable
  9. {
  10. private readonly HttpClient _httpClient;
  11. private readonly string _acumaticaBaseUrl;
  12. public RestService(string acumaticaBaseUrl)
  13. {
  14. _acumaticaBaseUrl = acumaticaBaseUrl;
  15. _httpClient = new HttpClient(new HttpClientHandler
  16. {
  17. UseCookies = true,
  18. CookieContainer = new System.Net.CookieContainer()
  19. })
  20. {
  21. BaseAddress = new Uri(acumaticaBaseUrl + "/entity/Default/20_200_001/"),
  22. DefaultRequestHeaders = { Accept = { MediaTypeWithQualityHeaderValue.Parse("text/json") } }
  23. };
  24. }
  25. public RestService(string acumaticaBaseUrl, string userName, string password, string tenant, string locale)
  26. {
  27. _acumaticaBaseUrl = acumaticaBaseUrl;
  28. _httpClient = new HttpClient(new HttpClientHandler
  29. {
  30. UseCookies = true,
  31. CookieContainer = new System.Net.CookieContainer()
  32. })
  33. {
  34. BaseAddress = new Uri(acumaticaBaseUrl + "/entity/Default/20_200_001/"),
  35. DefaultRequestHeaders = { Accept = { MediaTypeWithQualityHeaderValue.Parse("text/json") } }
  36. };
  37. _httpClient.PostAsJsonAsync(acumaticaBaseUrl + "/entity/auth/login", new
  38. {
  39. name = userName,
  40. password = password,
  41. tenant = tenant,
  42. locale = locale
  43. }).Result
  44. .EnsureSuccessStatusCode();
  45. }
  46. public string PutFile(string acumaticaBaseUrl, string entityName, string keys, string fileName, System.IO.Stream file)
  47. {
  48. string endPoint = string.Format("{0}/{1}/{2}/{3}/files/{4}", acumaticaBaseUrl, "/entity/Default/20.200.001/", entityName, keys, fileName);// +"/entity/Default/20.200.001/" + entityName + "/" + keys + "/files/" + fileName;
  49. var res = _httpClient.PutAsync(endPoint, new StreamContent(file)).Result.EnsureSuccessStatusCode();
  50. return res.Content.ReadAsStringAsync().Result;
  51. }
  52. void IDisposable.Dispose()
  53. {
  54. _httpClient.PostAsync(_acumaticaBaseUrl + "/entity/auth/logout",
  55. new ByteArrayContent(new byte[0])).Wait();
  56. _httpClient.Dispose();
  57. }
  58. }
  59. }