sendcloud golang 发送短信 示例代码

180it 2020-10-26 PM 2173℃ 0条
package main
 
import (
    "fmt"
    "crypto/md5"
    "encoding/hex"
    "sort"
    "strings"
    "net/url"
    "bytes"
    "net/http"
    "io/ioutil"
)
 
var urls  = "http://www.sendcloud.net/smsapi/send"
var token = "xxxxxx"
 
type postData struct {
    MsgType        int    `json:"msgType"`
    Phone          string `json:"phone"`
    SmsUser        string `json:"smsUser"`
    TemplateId     int    `json:"templateId"`
    Vars           string `json:"vars"`
}
 
 
 
func main() {
 
    postData := map[string]string{
        "msgType":    "0",
        "smsUser":    "xxxx",
        "templateId": "19807",
        "phone":      "xxxxxx",
        "vars":       "{%name%:\"xxxxx\",%rulename%:\"aaaa\",%num%:\"1\"}",
    }
    var keys []string
    for k := range postData {
        keys = append(keys, k)
    }
    sort.Strings(keys)
    param_str := ""
    for _, k := range keys {
        fmt.Println("Key:", k, "Value:", postData[k])
        str := k + "=" + postData[k] + "&"
        param_str += str
    }
    param_str = token  + "&" + param_str + token
    signature := Md5(param_str)
    signature = strings.ToUpper(signature)
    postData["signature"] = signature
    postValues := url.Values{}
    for postKey, PostValue := range postData{
        postValues.Set(postKey, PostValue)
    }
    postDataStr := postValues.Encode()
    postDataBytes := []byte(postDataStr)
    postBytesReader := bytes.NewReader(postDataBytes)
    httpReq, _ := http.NewRequest("POST", urls, postBytesReader)
    httpReq.Header.Add("Content-Type", "application/x-www-form-urlencoded")
    httpClient := &http.Client{}
    httpResp, err := httpClient.Do(httpReq)
    if err != nil {
        fmt.Printf("http get strUrl=%s response error=%s\n", urls, err.Error())
    }
    defer httpResp.Body.Close()
    body, errReadAll := ioutil.ReadAll(httpResp.Body)
    if errReadAll != nil {
        fmt.Printf("get response for strUrl=%s got error=%s\n", urls, errReadAll.Error())
    }
    fmt.Println(string(body))
}
 
 
//生成32位md5字串
func Md5(s string) string {
    h := md5.New()
    h.Write([]byte(s))
    return hex.EncodeToString(h.Sum(nil))
}
支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

sendcloud golang 发送短信 示例代码