http.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package webutils
  2. import (
  3. "errors"
  4. "io"
  5. "net/http"
  6. "strings"
  7. "time"
  8. "github.com/sirupsen/logrus"
  9. )
  10. func Get(reqUrl string, timeout time.Duration) ([]byte, error) {
  11. req, err := http.NewRequest(http.MethodGet, reqUrl, nil)
  12. if err != nil {
  13. logrus.Error(err)
  14. return nil, err
  15. }
  16. cli := http.Client{
  17. Timeout: timeout,
  18. }
  19. resp, err := cli.Do(req)
  20. if err != nil {
  21. logrus.Error(err)
  22. return nil, err
  23. }
  24. defer resp.Body.Close()
  25. b, err := io.ReadAll(resp.Body)
  26. if err != nil {
  27. logrus.Error(err)
  28. return nil, err
  29. }
  30. return b, nil
  31. }
  32. func Post(reqUrl string, payload string, timeout time.Duration) ([]byte, error) {
  33. req, err := http.NewRequest(http.MethodPost, reqUrl, strings.NewReader(payload))
  34. if err != nil {
  35. logrus.Error(err)
  36. return nil, err
  37. }
  38. cli := http.Client{
  39. Timeout: timeout,
  40. }
  41. resp, err := cli.Do(req)
  42. if err != nil {
  43. logrus.Error(err)
  44. return nil, err
  45. }
  46. if resp.StatusCode != http.StatusOK {
  47. logrus.Error("状态码错误:", resp)
  48. return nil, errors.New("状态码错误")
  49. }
  50. defer resp.Body.Close()
  51. b, err := io.ReadAll(resp.Body)
  52. if err != nil {
  53. logrus.Error(err)
  54. return nil, err
  55. }
  56. return b, nil
  57. }
  58. func PostWithHeader(reqUrl string, payload string, headers map[string]string, timeout time.Duration) ([]byte, error) {
  59. req, err := http.NewRequest(http.MethodPost, reqUrl, strings.NewReader(payload))
  60. if err != nil {
  61. logrus.Error(err)
  62. return nil, err
  63. }
  64. for key, val := range headers {
  65. req.Header.Set(key, val)
  66. }
  67. cli := http.Client{
  68. Timeout: timeout,
  69. }
  70. resp, err := cli.Do(req)
  71. if err != nil {
  72. logrus.Error(err)
  73. return nil, err
  74. }
  75. if resp.StatusCode != http.StatusOK {
  76. logrus.Error("状态码错误:", resp)
  77. return nil, errors.New("状态码错误")
  78. }
  79. defer resp.Body.Close()
  80. b, err := io.ReadAll(resp.Body)
  81. if err != nil {
  82. logrus.Error(err)
  83. return nil, err
  84. }
  85. return b, nil
  86. }
  87. func GetWithHeader(reqUrl string, headers map[string]string, timeout time.Duration) ([]byte, error) {
  88. req, err := http.NewRequest(http.MethodGet, reqUrl, nil)
  89. if err != nil {
  90. logrus.Error(err)
  91. return nil, err
  92. }
  93. for key, val := range headers {
  94. req.Header.Set(key, val)
  95. }
  96. cli := http.Client{
  97. Timeout: timeout,
  98. }
  99. resp, err := cli.Do(req)
  100. if err != nil {
  101. logrus.Error(err)
  102. return nil, err
  103. }
  104. defer resp.Body.Close()
  105. b, err := io.ReadAll(resp.Body)
  106. if err != nil {
  107. logrus.Error(err)
  108. return nil, err
  109. }
  110. return b, nil
  111. }