如何使用URL参数和JSON正文发送POST



我找到了如何发送带有URL参数的POST,或者如何发送带有JSON主体的POST,但我不知道如何将它们组合在一起(一个同时具有带参数的URL和JSON主体的请求(。

下面的代码(不正确(显示了我正在寻找的组合。我可以使用bytes.NewBuffer(jsonStr)strings.NewReader(parm.Encode()),但不能同时使用。

package main
import (
"bytes"
"net/http"
"net/url"
"strings"
)
func main() {
var jsonStr = []byte(`{"title":"my request"}`)
parm := url.Values{}
parm.Add("token", "hello")
req, err := http.NewRequest("POST", "https://postman-echo.com/post", bytes.NewBuffer(jsonStr), strings.NewReader(parm.Encode()))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
}

如何使用所有组件构建完整的POST调用?

使用唯一的json作为请求主体,并应用如下URL参数:

req.URL.RawQuery = parm.Encode()

从Go执行GET请求并构建Querystring

最新更新