ProxyManager.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net.Http;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Input;
  8. using UpgradePackageUploadTool.Models;
  9. namespace UpgradePackageUploadTool.Utilties
  10. {
  11. public class ProxyManager
  12. {
  13. private readonly string _baseUrl;
  14. private readonly HttpClient _httpClient;
  15. public ProxyManager(string baseUrl)
  16. {
  17. _baseUrl = baseUrl;
  18. _httpClient = new HttpClient
  19. {
  20. Timeout = TimeSpan.FromSeconds(10)
  21. };
  22. }
  23. public async Task<TResult> PostAsync<TRequest, TResult>(string method, TRequest obj)
  24. {
  25. try
  26. {
  27. var methodParts = method.Trim('/').Split('/');
  28. string requestUrl = $"{_baseUrl.Trim('/')}/{methodParts[0]}";
  29. var payload = $"{{\"jsonrpc\":\"2.0\",\"method\":\"{methodParts[1]}\",\"params\":{Newtonsoft.Json.JsonConvert.SerializeObject(obj)},\"id\":\"{Guid.NewGuid().ToString("N")}\"}}";
  30. HttpContent content = new StringContent(payload, Encoding.UTF8, "application/json");
  31. HttpResponseMessage response = await _httpClient.PostAsync(requestUrl, content);
  32. response.EnsureSuccessStatusCode();
  33. var resultContent = await response.Content.ReadAsStringAsync();
  34. var result = Newtonsoft.Json.JsonConvert.DeserializeObject<TResult>(resultContent);
  35. return result;
  36. }
  37. catch (Exception)
  38. {
  39. }
  40. return default;
  41. }
  42. }
  43. }