短信发送方法
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
2.3 KiB

2 months ago
  1. package sms
  2. import (
  3. "bytes"
  4. "crypto/md5"
  5. "encoding/hex"
  6. "io/ioutil"
  7. "net/http"
  8. "strings"
  9. "github.com/json-iterator/go"
  10. )
  11. var json = jsoniter.ConfigCompatibleWithStandardLibrary
  12. // 密码加密
  13. func Md5Str(str ...string) string {
  14. var build strings.Builder
  15. if len(str) > 0 {
  16. for _, v := range str {
  17. build.WriteString(v)
  18. }
  19. } else {
  20. return ""
  21. }
  22. h := md5.New()
  23. h.Write([]byte(build.String())) // 需要加密的字符串
  24. cipher2Str := h.Sum(nil)
  25. sMd5 := hex.EncodeToString(cipher2Str) // 输出加密结果
  26. return sMd5
  27. }
  28. /*
  29. * 连接多个字符串
  30. */
  31. func StringJoin(s ...string) string {
  32. var build strings.Builder
  33. if len(s) > 0 {
  34. for _, v := range s {
  35. build.WriteString(v)
  36. }
  37. }
  38. return build.String()
  39. }
  40. /**
  41. * post 请求
  42. */
  43. func PostJsonData(url string, param interface{}, header ...map[string]string) ([]byte, error) {
  44. httpClient := &http.Client{}
  45. params, err := json.Marshal(param)
  46. if err != nil {
  47. return []byte(""), err
  48. }
  49. req, err := http.NewRequest("POST", url, bytes.NewBuffer(params))
  50. if err != nil {
  51. return []byte(""), err
  52. }
  53. req.Header.Set("Content-Type", "application/json")
  54. if len(header) > 0 {
  55. for _, item := range header {
  56. for k, v := range item {
  57. req.Header[k] = []string{v}
  58. }
  59. }
  60. }
  61. resp, err := httpClient.Do(req)
  62. if err != nil {
  63. return []byte(""), err
  64. }
  65. defer resp.Body.Close()
  66. body, err := ioutil.ReadAll(resp.Body)
  67. if err != nil {
  68. return []byte(""), err
  69. }
  70. return body, nil
  71. }
  72. /**
  73. * 自定义HTTP请求
  74. */
  75. func SendHttp(method, url string, param map[string]string, header ...map[string]string) ([]byte, error) {
  76. httpClient := &http.Client{}
  77. paramStr := ""
  78. if len(param) > 0 {
  79. for key, value := range param {
  80. paramStr += key + "=" + value + "&"
  81. }
  82. paramStr = paramStr[0 : len(paramStr)-1]
  83. }
  84. req, err := http.NewRequest(method, url, strings.NewReader(paramStr))
  85. if err != nil {
  86. return []byte(""), err
  87. }
  88. req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  89. if len(header) > 0 {
  90. for _, item := range header {
  91. for k, v := range item {
  92. req.Header.Set(k, v)
  93. }
  94. }
  95. }
  96. resp, err := httpClient.Do(req)
  97. if err != nil {
  98. return []byte(""), err
  99. }
  100. defer resp.Body.Close()
  101. body, err := ioutil.ReadAll(resp.Body)
  102. if err != nil {
  103. return []byte(""), err
  104. }
  105. return body, nil
  106. }