HttpClientHelper.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Net.Http;
  3. using System.Text;
  4. using System.Threading.Tasks;
  5. using Newtonsoft.Json;
  6. public class HttpClientHelper
  7. {
  8. private readonly HttpClient _httpClient;
  9. public HttpClientHelper()
  10. {
  11. _httpClient = new HttpClient();
  12. // 设置一些默认的请求头
  13. _httpClient.DefaultRequestHeaders.Add("User-Agent", "C#-HttpClientHelper");
  14. }
  15. // 发送 GET 请求
  16. public async Task<string> GetAsync(string url)
  17. {
  18. try
  19. {
  20. HttpResponseMessage response = await _httpClient.GetAsync(url);
  21. response.EnsureSuccessStatusCode(); // 如果响应状态码不是 2xx,会抛出异常
  22. return await response.Content.ReadAsStringAsync();
  23. }
  24. catch (Exception ex)
  25. {
  26. // 处理异常
  27. return $"Error: {ex.Message}";
  28. }
  29. }
  30. // 发送 POST 请求
  31. public async Task<string> PostAsync(string url, object data)
  32. {
  33. try
  34. {
  35. var jsonContent = JsonConvert.SerializeObject(data);
  36. var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
  37. HttpResponseMessage response = await _httpClient.PostAsync(url, content);
  38. response.EnsureSuccessStatusCode();
  39. return await response.Content.ReadAsStringAsync();
  40. }
  41. catch (Exception ex)
  42. {
  43. return $"Error: {ex.Message}";
  44. }
  45. }
  46. // 发送 PUT 请求
  47. public async Task<string> PutAsync(string url, object data)
  48. {
  49. try
  50. {
  51. var jsonContent = JsonConvert.SerializeObject(data);
  52. var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
  53. HttpResponseMessage response = await _httpClient.PutAsync(url, content);
  54. response.EnsureSuccessStatusCode();
  55. return await response.Content.ReadAsStringAsync();
  56. }
  57. catch (Exception ex)
  58. {
  59. return $"Error: {ex.Message}";
  60. }
  61. }
  62. // 发送 DELETE 请求
  63. public async Task<string> DeleteAsync(string url)
  64. {
  65. try
  66. {
  67. HttpResponseMessage response = await _httpClient.DeleteAsync(url);
  68. response.EnsureSuccessStatusCode();
  69. return await response.Content.ReadAsStringAsync();
  70. }
  71. catch (Exception ex)
  72. {
  73. return $"Error: {ex.Message}";
  74. }
  75. }
  76. }