短信发送方法
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.

84 lines
1.4 KiB

  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. }