go - 如何将此 curl 调用转换为 Go?
问题描述
我有以下 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
}
但是,我不知道在哪里/如何指定标题和两个数据字段。请帮忙!
解决方案
创建请求并按如下方式发送。根据您的应用程序处理错误和响应。
endpoint := "https://www.myexample.com/mypath?param1=foobar"
data := url.Values{}
data.Set("A", "B")
data.Set("C", "D")
//create new POST request to the url and encoded form Data
r, err := http.NewRequest("POST", endpoint, strings.NewReader(data.Encode())) // URL-encoded payload
if err != nil {
log.Fatal(err)
}
//set headers to the request
r.Header.Add("Content-Type", "application/x-www-form-urlencoded") //this is a must for form data encoded request
r.Header.Add("Authorization", "Basic XXXX")
//send request and get the response
client := &http.Client{}
res, err := client.Do(r)
if err != nil {
//handle error
log.Fatal(`error: `,err)
}
log.Println(res.Status)
//handle response part here
推荐阅读
- c - 如何让函数打印输入值的平方?(数据结构,AVL 树)
- javascript - 滚动浏览彼此堆叠的 div
- javascript - Qt,加载和修改网页
- xamarin - 如何在混合 Webview Xamarin 表单中从 WebApi 加载 Javascript
- c# - 如何在 url 中发送 base64 字符串?
- javascript - 在反应中使用 fetch API 时输入意外结束
- excel - 过滤单元格以根据其内容连接
- node.js - 如何等到所有数据都加载到Angular 2异步依赖的http调用中?
- git - Github 将提交推送到不同的文件夹结构
- sql - 使用 join 获取所有记录