zoukankan      html  css  js  c++  java
  • sendcloud golang 发送短信 示例代码

    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
    ", 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
    ", 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))
    }
    
    欢迎指正,交流沟通,共同进步!对您有帮助的话点下推荐~~
  • 相关阅读:
    js动态生成表格
    My97DatePicker显示时间控件的使用方法
    理解Action,Service和Dao功能(转)
    Myeclipseforspring 10破解
    MySQL常用命令(参考资料,部分改动)
    Struts2---Result(传统Web应用程序与Ajax应用程序的异同)
    正则表达式笔记
    day5.字符串内置函数
    day5.数据类型简介
    day4.变量+程序交互
  • 原文地址:https://www.cnblogs.com/gaoyawei/p/9914554.html
Copyright © 2011-2022 走看看