u_http.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package cutil
  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 HttpGetStringAddHeadersResponseString(baseUrl string, headers map[string]string, params map[string]string) (string, error) {
  55. // 将参数编码到URL中
  56. u, _ := url.Parse(baseUrl)
  57. q := u.Query()
  58. for key, value := range params {
  59. q.Add(key, value)
  60. }
  61. u.RawQuery = q.Encode()
  62. // 创建请求
  63. req, err := http.NewRequest("GET", u.String(), nil)
  64. if err != nil {
  65. return "", err
  66. }
  67. // 设置请求头
  68. for key, value := range headers {
  69. req.Header.Set(key, value)
  70. }
  71. // 发送请求
  72. client := &http.Client{}
  73. resp, err := client.Do(req)
  74. if err != nil {
  75. return "", err
  76. }
  77. // 读取响应体
  78. body, err := io.ReadAll(resp.Body)
  79. if err != nil {
  80. return "", err
  81. }
  82. err = resp.Body.Close()
  83. if err != nil {
  84. return "", err
  85. }
  86. result := string(body)
  87. //log.GlobalLogger.Info("发送http请求,请求路径=", baseUrl, ",请求头=", headers, "请求参数=", params, "请求结果=", result)
  88. return result, nil
  89. }