首页 > 解决方案 > 如何发送带有 URL 参数和 JSON 正文的 POST?

问题描述

我找到了如何发送POST带有 URL 参数的 a,或者如何发送POST带有 JSON 正文的 a,但我不知道如何将它们组合在一起(带有参数的 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包含所有组件的完整调用?

标签: httpgoposturl-parametersdocument-body

解决方案


使用唯一的 json 作为您的请求正文,并应用如下 URL 参数:

req.URL.RawQuery = parm.Encode()

Go 执行 GET 请求并构建 Querystring


推荐阅读