2012-11-07 37 views
32
olarak ayarlayın

Git uygulamamın kendisini belirli bir UserAgent olarak belirtmesini sağlamaya çalışıyorum, ancak bunu net/http ile yapmayla ilgili bir şey bulamıyorum. http.Client oluşturuyorum ve client.Get() aracılığıyla Get istekleri yapmak için kullanıyorum.UserAgent öğesini http isteği

UserAgent İstemciye ya da hiç bir şekilde ayarlama yapmanın bir yolu var mı?

cevap

63

isteğiniz kullanımını request.Header.Set("key", "value") oluşturarak:

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)) 

} 

Sonuç:

2012/11/07 15:05:47 { 
    "user-agent": "Golang_Spider_Bot/3.0" 
} 

dip not http://httpbin.org, bu tür bir şeyi test etmek için harika!

+3

httpbin.org'u işaretlediğiniz için teşekkürler - bunu bilmiyordum. – kostix

+2

Yönlendirme sonrasında üstbilgilerin kullanılmasıyla ilgili bir sorun var - bunlar varsayılan olarak kullanılmayacak. Client.CheckRedirect alanına özel işlev sağlamalısınız. –

+1

Sadece "Golang Spider Bot v. 3.0" sözdizimsel olarak doğru olsa da, muhtemelen ne istediğin anlamına gelmez. Spesifikasyona göre, 5 ürün jetonu var demektir: "Golang", "Örümcek", "Bot", "v." Ve "3.0". Daha doğru bir şey "Golang_Spider_Bot/3.0" olur: http://www.bizcoder.com/the-much-maligned-user-agent-header –