PracticeDev/study_go/http/foreach_get.go

67 lines
1.5 KiB
Go
Raw Permalink Normal View History

2022-12-20 17:31:11 +08:00
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"time"
"math/rand"
"strconv"
"crypto/sha1"
"crypto/hmac"
"encoding/base64"
)
/*
* keyStr 密钥
* value 消息内容
*/
func HMACSHA1(keyStr, value string) string{
key := []byte(keyStr)
mac := hmac.New(sha1.New, key)
mac.Write([]byte(value))
//进行base64编码
res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
return res
}
func main() {
curUTC := time.Now().UTC().Format("2006-01-02T15:04:05Z")
signature := rand.New(rand.NewSource(time.Now().Unix())).Int63()
httpMethod :=
"AccessKeyId=LTAILUL4ts0XZgY5" +
"&Action=CheckDomain" +
"&DomainName=abc.com" +
"&Format=JSON" +
"&SignatureMethod=HMAC-SHA1" +
"&SignatureNonce=" + strconv.Itoa(int(signature)) +
"&SignatureVersion=1.0" +
"&Timestamp=" + url.QueryEscape(curUTC) +
"&Version=2016-05-11"
StringToSign :=
"GET&"+url.QueryEscape("/") + "&" + url.QueryEscape(httpMethod)
url :=
"http://domain.aliyuncs.com/?" +
httpMethod +
"&Signature=" + HMACSHA1("LTAILUL4ts0XZgY5&", StringToSign)
fmt.Println("url:", url)
fmt.Println("curUTC:", curUTC)
fmt.Println("signature:",signature)
fmt.Println("StringToSign",StringToSign)
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
fmt.Println(resp.StatusCode)
if resp.StatusCode == 200 {
fmt.Println("ok")
}
}