32
我想让我的Go应用程序指定自己为特定的UserAgent
,但无法找到任何关于如何使用net/http
执行此操作的任何信息。我正在创建一个http.Client
,并使用它通过client.Get()
发出Get
请求。在http请求中设置UserAgent
有没有办法在客户端设置UserAgent
,或根本没有办法?
我想让我的Go应用程序指定自己为特定的UserAgent
,但无法找到任何关于如何使用net/http
执行此操作的任何信息。我正在创建一个http.Client
,并使用它通过client.Get()
发出Get
请求。在http请求中设置UserAgent
有没有办法在客户端设置UserAgent
,或根本没有办法?
当创建您的要求使用request.Header.Set("key", "value")
:
package main
import (
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "http://httpbin.org/user-agent", nil)
if err != nil {
log.Fatalln(err)
}
req.Header.Set("User-Agent", "Golang_Spider_Bot/3.0")
resp, err := client.Do(req)
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
log.Println(string(body))
}
结果:
2012/11/07 15:05:47 {
"user-agent": "Golang_Spider_Bot/3.0"
}
附: http://httpbin.org对于测试这种事情是惊人的!
感谢您指出httpbin.org - 不知道它。 – kostix
重定向后使用标题时出现问题 - 默认情况下不会使用它们。您应该在Client.CheckRedirect字段中提供自定义功能。 –
只是想指出,虽然“Golang Spider Bot v。3.0”在语法上是正确的,但它可能并不意味着你想要的。根据规范,这意味着有5个产品令牌:“Golang”,“Spider”,“Bot”,“v。”和“3.0”。更准确的将是“Golang_Spider_Bot/3.0” 请参阅:http://www.bizcoder.com/the-much-maligned-user-agent-header –