golang:
nowTime := time.Now().Unix()
r := rand.New(rand.NewSource(time.Now().UnixNano()))
random := r.Int()
action := "DeleteVodFile"
nonce := strconv.Itoa(random)
region := "ap-guangzhou"
secretId := "AKIDJct33uY5RcgdT8g3IPQK3iN0Y1Oh3vqq"
signatureMethod := "HmacSHA1"
timestamp := strconv.Itoa(int(nowTime))
fileId := "5285890781379611159"
priority := "0"
// 加密前 手动按字典排序
dataFoo := "GETvod.api.qcloud.com/v2/index.php?"
dataFoo += "Action=" + action
dataFoo += "&Nonce=" + nonce
dataFoo += "&Region=" + priority
dataFoo += "&SecretId=" + secretId
dataFoo += "&SignatureMethod=" + signatureMethod
dataFoo += "&Timestamp=" + timestamp
dataFoo += "&fileId=" + fileId
dataFoo += "&priority=" + priority
signature := this.signature(dataFoo)
signatureUrl := url.QueryEscape(signature)
fmt.Println("Signature:", signature)
fmt.Println("SignatureUrl:", signatureUrl)
// 实际申请的数据顺序无关
dataBar := "https://vod.api.qcloud.com/v2/index.php?"
dataBar += "Action=" + url.QueryEscape(action)
dataBar += "&fileId=" + url.QueryEscape(fileId)
dataBar += "&Nonce=" + url.QueryEscape(nonce)
dataBar += "&priority=" + url.QueryEscape(priority)
dataBar += "&Region=" + url.QueryEscape(region)
dataBar += "&SecretId=" + url.QueryEscape(secretId)
dataBar += "&SignatureMethod=" + url.QueryEscape(signatureMethod)
dataBar += "&Timestamp=" + url.QueryEscape(timestamp)
dataBar += "&Signature=" + signatureUrl
req, err := http.NewRequest("GET", dataBar, nil)
// req, err := http.NewRequest("POST", "https://vod.api.qcloud.com/v2/index.php?Action=DeleteVodFile", buf)
if err != nil {
fmt.Println("NewRequest失败:", err.Error())
return
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("client.Do失败:", err.Error())
return
}
stdout := os.Stdout
io.Copy(stdout, resp.Body)
defer resp.Body.Close()
输出结果
Signature: LcHi5uPUJb4Z+6IuM6jDPdeLeQBHRVR2b2QuYXBpLnFjbG91ZC5jb20vdjIvaW5kZXgucGhwP0FjdGlvbj1EZWxldGVWb2RGaWxlJk5vbmNlPTcxNTkzOTg2NTQ2MzEwNzYxMTAmUmVnaW9uPTAmU2VjcmV0SWQ9QUtJREpjdDMzdVk1UmNnZFQ4ZzNJUFFLM2lOMFkxT2gzdnFxJlNpZ25hdHVyZU1ldGhvZD1IbWFjU0hBMSZUaW1lc3RhbXA9MTUzNTA5OTE4OSZmaWxlSWQ9NTI4NTg5MDc4MTM3OTYxMTE1OSZwcmlvcml0eT0w
SignatureUrl: LcHi5uPUJb4Z%2B6IuM6jDPdeLeQBHRVR2b2QuYXBpLnFjbG91ZC5jb20vdjIvaW5kZXgucGhwP0FjdGlvbj1EZWxldGVWb2RGaWxlJk5vbmNlPTcxNTkzOTg2NTQ2MzEwNzYxMTAmUmVnaW9uPTAmU2VjcmV0SWQ9QUtJREpjdDMzdVk1UmNnZFQ4ZzNJUFFLM2lOMFkxT2gzdnFxJlNpZ25hdHVyZU1ldGhvZD1IbWFjU0hBMSZUaW1lc3RhbXA9MTUzNTA5OTE4OSZmaWxlSWQ9NTI4NTg5MDc4MTM3OTYxMTE1OSZwcmlvcml0eT0w
最终的拼装Url: https://vod.api.qcloud.com/v2/index.php?Action=DeleteVodFile&fileId=5285890781379611159&Nonce=7159398654631076110&priority=0&Region=ap-guangzhou&SecretId=AKIDJct33uY5RcgdT8g3IPQK3iN0Y1Oh3vqq&SignatureMethod=HmacSHA1&Timestamp=1535099189&Signature=LcHi5uPUJb4Z%2B6IuM6jDPdeLeQBHRVR2b2QuYXBpLnFjbG91ZC5jb20vdjIvaW5kZXgucGhwP0FjdGlvbj1EZWxldGVWb2RGaWxlJk5vbmNlPTcxNTkzOTg2NTQ2MzEwNzYxMTAmUmVnaW9uPTAmU2VjcmV0SWQ9QUtJREpjdDMzdVk1UmNnZFQ4ZzNJUFFLM2lOMFkxT2gzdnFxJlNpZ25hdHVyZU1ldGhvZD1IbWFjU0hBMSZUaW1lc3RhbXA9MTUzNTA5OTE4OSZmaWxlSWQ9NTI4NTg5MDc4MTM3OTYxMTE1OSZwcmlvcml0eT0w
{"code":4100,"message":"\u8eab\u4efd\u8ba4\u8bc1\u5931\u8d25\uff0c\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u5931\u8d25","codeDesc":"AuthFailure"}
应该怎么写才能通过?
相似问题