httper.go 3.2 KB

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