【发布时间】:2021-08-06 16:06:42
【问题描述】:
我有以下 curl 调用:
curl \
--request POST \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Authorization: Basic XXXX" \
--data-urlencode 'A=B' \
--data-urlencode 'C=D' \
"https://www.myexample.com/mypath?param1=foobar"
我怎样才能编写出完全相同的 Go 代码?
到目前为止,我已经成功构建了完整的 URL,并将其发送到http.NewRequestWithContext()
u, err := url.Parse("https://www.myexample.com" + "/mypath")
if err != nil {
return err
}
q := u.Query()
u.RawQuery = q.Encode()
http.NewRequestWithContext(myContext, http.MethodPost, u.String(), nil)
response, err := http.NewRequestWithContext(myContext, http.MethodPost, s.cfg.BaseDRAPI + oAuthPath, nil)
if err != nil {
return err
}
但是,我不知道在哪里/如何指定标题和两个数据字段。 请帮忙!
【问题讨论】:
-
http.NewRequestWithContext返回请求,而不是响应。您可以在使用http.Client.Do方法发送请求之前将标头添加到该请求。 -
mholt.github.io/curl-to-go 是一个好的开始。