u_http.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package util
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "io"
  6. "net/http"
  7. "net/url"
  8. )
  9. func HttpGet(url string) (string, error) {
  10. // 创建一个HTTP客户端
  11. client := &http.Client{}
  12. // 创建一个GET请求
  13. req, err := http.NewRequest("GET", url, nil)
  14. if err != nil {
  15. return "", err
  16. }
  17. // 发送请求并获取响应
  18. resp, err := client.Do(req)
  19. if err != nil {
  20. return "", err
  21. }
  22. defer func(Body io.ReadCloser) {
  23. err := Body.Close()
  24. if err != nil {
  25. }
  26. }(resp.Body)
  27. // 读取响应的内容
  28. body, err := io.ReadAll(resp.Body)
  29. if err != nil {
  30. return "", err
  31. }
  32. return string(body), nil
  33. }
  34. func HttpPostJsonResponseString(url string, params map[string]string) (string, error) {
  35. jsonData, err := json.Marshal(params)
  36. if err != nil {
  37. return "", err
  38. }
  39. resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
  40. if err != nil {
  41. return "", err
  42. }
  43. defer func(Body io.ReadCloser) {
  44. err := Body.Close()
  45. if err != nil {
  46. }
  47. }(resp.Body)
  48. body, err := io.ReadAll(resp.Body)
  49. if err != nil {
  50. return "", err
  51. }
  52. return string(body), nil
  53. }
  54. func HttpPostWithHeaders(baseUrl string, headers map[string]string, params map[string]string) (string, error) {
  55. // 构建请求体
  56. data := url.Values{}
  57. for key, value := range params {
  58. data.Set(key, value)
  59. }
  60. requestBody := bytes.NewBufferString(data.Encode())
  61. // 创建请求
  62. req, err := http.NewRequest("POST", baseUrl, requestBody)
  63. if err != nil {
  64. return "", err
  65. }
  66. // 设置请求头
  67. for key, value := range headers {
  68. req.Header.Set(key, value)
  69. }
  70. // 发送请求
  71. client := &http.Client{}
  72. resp, err := client.Do(req)
  73. if err != nil {
  74. return "", err
  75. }
  76. body, err := io.ReadAll(resp.Body)
  77. return string(body), nil
  78. }
  79. func HttpGetStringAddHeadersResponseString(baseUrl string, headers map[string]string, params map[string]string) (string, error) {
  80. // 将参数编码到URL中
  81. u, _ := url.Parse(baseUrl)
  82. q := u.Query()
  83. for key, value := range params {
  84. q.Add(key, value)
  85. }
  86. u.RawQuery = q.Encode()
  87. // 创建请求
  88. req, err := http.NewRequest("GET", u.String(), nil)
  89. if err != nil {
  90. return "", err
  91. }
  92. // 设置请求头
  93. for key, value := range headers {
  94. req.Header.Set(key, value)
  95. }
  96. // 发送请求
  97. client := &http.Client{}
  98. resp, err := client.Do(req)
  99. if err != nil {
  100. return "", err
  101. }
  102. // 读取响应体
  103. body, err := io.ReadAll(resp.Body)
  104. if err != nil {
  105. return "", err
  106. }
  107. err = resp.Body.Close()
  108. if err != nil {
  109. return "", err
  110. }
  111. result := string(body)
  112. //log.GlobalLogger.Info("发送http请求,请求路径=", baseUrl, ",请求头=", headers, "请求参数=", params, "请求结果=", result)
  113. return result, nil
  114. }