2012-11-07 13 views
32

Sto tentando di rendere la mia applicazione Go specifica come specifica UserAgent, ma non riesco a trovare nulla su come andare a fare ciò con net/http. Sto creando un http.Client e lo utilizzo per effettuare richieste , tramite client.Get().Imposta UserAgent nella richiesta http

C'è un modo per impostare il UserAgent nel client o affatto?

risposta

63

Quando si crea per l'utilizzo da richiesta 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)) 

} 

Risultato:

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

P.S. http://httpbin.org è sorprendente per testare questo genere di cose!

+3

grazie per aver segnalato httpbin.org - non lo sapevo. – kostix

+2

Si è verificato un problema con l'utilizzo delle intestazioni dopo il reindirizzamento: non verranno utilizzate per impostazione predefinita. È necessario fornire funzioni personalizzate nel campo Client.CheckRedirect. –

+1

Voglio solo precisare che mentre "Golang Spider Bot v. 3.0" è sintatticamente corretto, probabilmente non significa quello che vuoi. Secondo le specifiche, ciò significa che ci sono 5 token di prodotto: "Golang", "Spider", "Bot", "v." E "3.0". Qualcosa di più accurato sarebbe "Golang_Spider_Bot/3.0" vedere: http://www.bizcoder.com/the-much-maligned-user-agent-header –

Problemi correlati