正确的数据没有到达 Twilio
The right data is not getting to Twilio
我正在尝试使用 Go 的 HTTP 包对 Twilio 进行 API 调用,但似乎正确的数据没有到达 Twilio。
要求:
func startVerification() (string, error) {
url := fmt.Sprintf("https://verify.twilio.com/v2/Services/%s/Verifications", internal.Config.TwilioServiceSID)
xx := "Locale=es&To=+1234567890&Channel=sms"
payload := strings.NewReader(xx)
log.Println(fmt.Sprintf("Payload = %v", xx))
client := &http.Client{}
req, err := http.NewRequest("POST", url, payload)
if err != nil {
return "", fmt.Errorf("error occured while creating request %v", err)
}
req.SetBasicAuth(internal.Config.TwilioSD, internal.Config.TwilioAuthToken)
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
return "", fmt.Errorf("error occured while doing %v", err)
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
return "", fmt.Errorf("error occured while reading %v", err)
}
return string(body), nil
}
但 Twilio 抱怨的是:
{
"code": 60200,
"message": "Invalid parameter To
: 1234567890",
"more_info": "https://www.twilio.com/docs/errors/60200",
"status": 400 }
但是,如果我从 Postman 发送请求,它会起作用。
我怀疑数字被删除之前的“+”,但我不确定,因为我是 Go 的新手,不理解它的细微差别。
请注意,+1234567890
只是我用于此问题的虚拟数字。
您可能想为此使用 url.Values
:
params := url.Values{}
params.Add("Locale", "es")
params.Add("To", "+1234567890")
params.Add("Channel", "sms")
payload := strings.NewReader(params.Encode())
我正在尝试使用 Go 的 HTTP 包对 Twilio 进行 API 调用,但似乎正确的数据没有到达 Twilio。
要求:
func startVerification() (string, error) {
url := fmt.Sprintf("https://verify.twilio.com/v2/Services/%s/Verifications", internal.Config.TwilioServiceSID)
xx := "Locale=es&To=+1234567890&Channel=sms"
payload := strings.NewReader(xx)
log.Println(fmt.Sprintf("Payload = %v", xx))
client := &http.Client{}
req, err := http.NewRequest("POST", url, payload)
if err != nil {
return "", fmt.Errorf("error occured while creating request %v", err)
}
req.SetBasicAuth(internal.Config.TwilioSD, internal.Config.TwilioAuthToken)
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
return "", fmt.Errorf("error occured while doing %v", err)
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
return "", fmt.Errorf("error occured while reading %v", err)
}
return string(body), nil
}
但 Twilio 抱怨的是:
{ "code": 60200, "message": "Invalid parameter
To
: 1234567890", "more_info": "https://www.twilio.com/docs/errors/60200", "status": 400 }
但是,如果我从 Postman 发送请求,它会起作用。
我怀疑数字被删除之前的“+”,但我不确定,因为我是 Go 的新手,不理解它的细微差别。
请注意,+1234567890
只是我用于此问题的虚拟数字。
您可能想为此使用 url.Values
:
params := url.Values{}
params.Add("Locale", "es")
params.Add("To", "+1234567890")
params.Add("Channel", "sms")
payload := strings.NewReader(params.Encode())