func send_msg(msg string, user string) {
url := "https://test.com/"
token := "Bearer " + get_token()
header := req.Header{
"Content-Type": "application/json",
"Authorization": token,
}
// this string param can not use variable user and msg.
// param := `{
// "email": "jjjj@gmail.com",
// "msg_type": "text",
// "content": { "text": "aaaaaaaaaaaaa" }
// }`
// this req.Param param error:missing type in composite literal
param := req.Param{
"email": user,
"msg_type": "text",
"content": { "text" : msg },
}
r,_ := req.Post(url, header, param)
resp := r.String()
log.Println(resp)
}
此参数Param参数错误:复合文字中缺少类型
此字符串参数不能使用变量user和msg。
如何使用可变参数?
答案 0 :(得分:1)
假设您使用的是"net/http"
,则Post函数期望依次使用url
,content-type
和body
。链接:net/http#post
因此,对于您的特殊情况,它应该看起来像这样
url := "https://test.com/"
contentType := "application/json"
param := []byte(`{"email": user, "msg_type": "text","content": { "text" : "msg" }, }`)
resp, err := http.Post(url, contentType, bytes.NewBuffer(param))
defer resp.Body.Close()
if err != nil {
//handle error
} else {
body, _ := ioutil.ReadAll(resp.Body)
log.Println(body)
}
如果要添加自定义标头,可以使用newRequest,它为您提供req
,然后您可以添加或设置自定义标头。
req.Headers.Set(existingHeaderWithNewValue)
req.Headers.Add(customHeader)