如何发出HTTP发布数据请求

时间:2019-12-24 00:21:50

标签: go

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。

如何使用可变参数?

1 个答案:

答案 0 :(得分:1)

假设您使用的是"net/http",则Post函数期望依次使用urlcontent-typebody。链接: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)