在golang的http请求中附加用户名和密码

Posted

技术标签:

【中文标题】在golang的http请求中附加用户名和密码【英文标题】:append username and password in http request in golang 【发布时间】:2016-08-16 04:22:10 【问题描述】:

到目前为止我尝试过的就像 现在形成的http请求是:curl -X POST http://localhost:8080/v1.0

l_httpClient_ptr := http.Client
  Timeout: timeout,
 
 var l_resp_ptr *http.Response
 var l_resp_byte []byte
 l_resp_ptr, r_err = l_httpClient_ptr.Post(p_url_str, "text/xml; charset=utf-8", bytes.NewBufferString(p_request_str))

 l_resp_byte, r_err = ioutil.ReadAll(l_resp_ptr.Body)
 l_resp_ptr.Body.Close()
 r_response_str = string(l_resp_byte)

 return

在这里我只能发送请求 xml 和 URL。 使用我的代码,我不知道如何发送用户名和密码以及 url,它应该类似于以下 URL:

curl -H "ChannelName: guest" -H "ChannelPassword: guest" -X POST http://localhost:8080/v1.0/

【问题讨论】:

要回显@JimB,请使用http包:golang.org/pkg/net/http/#Request.SetBasicAuth @JimB,你能解释一下我需要在这个代码中添加什么来只发送用户名和密码以及 http 请求 @william.taylor.09 l_httpClient_ptr.Post(p_url_str, "text/xml; charset=utf-8", bytes.NewBufferString(p_request_str)) 我只能发送正常的http请求但我需要发送用户名和密码,就像我在我的问题中提到的那样 查看这里如何设置标题:***.com/questions/32540219/… 【参考方案1】:

您可以使用自定义标头创建请求,如下所示:

req, err := http.NewRequest("POST", p_url_str, bytes.NewBufferString(p_request_str))
req.Header.Set("ChannelName", "guest")
req.Header.Set("ChannelPassword", "guest") 

然后执行这个请求:

l_resp_byte, r_err := l_httpClient_ptr.Do(req)

【讨论】:

以上是关于在golang的http请求中附加用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章

HTTP基础认证Basic Authentication

Golang实战项目-B2C电商平台

HTTP系列二: 使用telnet模拟http请求

paho.mqtt.golang--option.go 源码解析

golang http 请求添加拦截器

php 无法读取 http post 请求正文