httper.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package httper
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "io/ioutil"
  7. "net/http"
  8. "time"
  9. "github.com/IceWhaleTech/CasaOS/pkg/config"
  10. "github.com/tidwall/gjson"
  11. )
  12. //发送GET请求
  13. //url:请求地址
  14. //response:请求返回的内容
  15. func Get(url string, head map[string]string) (response string) {
  16. client := &http.Client{Timeout: 30 * time.Second}
  17. req, err := http.NewRequest("GET", url, nil)
  18. for k, v := range head {
  19. req.Header.Add(k, v)
  20. }
  21. if err != nil {
  22. return ""
  23. }
  24. resp, err := client.Do(req)
  25. if err != nil {
  26. fmt.Println(err)
  27. //需要错误日志的处理
  28. //loger.Error(error)
  29. return ""
  30. //panic(error)
  31. }
  32. defer resp.Body.Close()
  33. var buffer [512]byte
  34. result := bytes.NewBuffer(nil)
  35. for {
  36. n, err := resp.Body.Read(buffer[0:])
  37. result.Write(buffer[0:n])
  38. if err != nil && err == io.EOF {
  39. break
  40. } else if err != nil {
  41. //loger.Error(err)
  42. return ""
  43. // panic(err)
  44. }
  45. }
  46. response = result.String()
  47. return
  48. }
  49. //发送GET请求
  50. //url:请求地址
  51. //response:请求返回的内容
  52. func PersonGet(url string) (response string) {
  53. client := &http.Client{Timeout: 5 * time.Second}
  54. req, err := http.NewRequest("GET", url, nil)
  55. if err != nil {
  56. return ""
  57. }
  58. resp, err := client.Do(req)
  59. if err != nil {
  60. //需要错误日志的处理
  61. //loger.Error(error)
  62. return ""
  63. //panic(error)
  64. }
  65. defer resp.Body.Close()
  66. var buffer [512]byte
  67. result := bytes.NewBuffer(nil)
  68. for {
  69. n, err := resp.Body.Read(buffer[0:])
  70. result.Write(buffer[0:n])
  71. if err != nil && err == io.EOF {
  72. break
  73. } else if err != nil {
  74. //loger.Error(err)
  75. return ""
  76. // panic(err)
  77. }
  78. }
  79. response = result.String()
  80. return
  81. }
  82. //发送POST请求
  83. //url:请求地址,data:POST请求提交的数据,contentType:请求体格式,如:application/json
  84. //content:请求放回的内容
  85. func Post(url string, data []byte, contentType string, head map[string]string) (content string) {
  86. req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
  87. req.Header.Add("content-type", contentType)
  88. for k, v := range head {
  89. req.Header.Add(k, v)
  90. }
  91. if err != nil {
  92. panic(err)
  93. }
  94. client := &http.Client{Timeout: 5 * time.Second}
  95. resp, error := client.Do(req)
  96. if error != nil {
  97. fmt.Println(error)
  98. return
  99. }
  100. defer resp.Body.Close()
  101. result, _ := ioutil.ReadAll(resp.Body)
  102. content = string(result)
  103. return
  104. }
  105. //发送POST请求
  106. //url:请求地址,data:POST请求提交的数据,contentType:请求体格式,如:application/json
  107. //content:请求放回的内容
  108. func ZeroTierGet(url string, head map[string]string) (content string, code int) {
  109. req, err := http.NewRequest(http.MethodGet, url, nil)
  110. for k, v := range head {
  111. req.Header.Add(k, v)
  112. }
  113. if err != nil {
  114. panic(err)
  115. }
  116. client := &http.Client{Timeout: 20 * time.Second}
  117. resp, error := client.Do(req)
  118. if error != nil {
  119. panic(error)
  120. }
  121. defer resp.Body.Close()
  122. code = resp.StatusCode
  123. result, _ := ioutil.ReadAll(resp.Body)
  124. content = string(result)
  125. return
  126. }
  127. //发送GET请求
  128. //url:请求地址
  129. //response:请求返回的内容
  130. func OasisGet(url string) (response string) {
  131. head := make(map[string]string)
  132. t := make(chan string)
  133. go func() {
  134. str := Get(config.ServerInfo.ServerApi+"/token", nil)
  135. t <- gjson.Get(str, "data").String()
  136. }()
  137. head["Authorization"] = <-t
  138. return Get(url, head)
  139. }