Maison >développement back-end >Golang >Comment définir des en-têtes pour les requêtes HTTP et utiliser une adresse IP spécifique avec http.Client et http.Transport ?

Comment définir des en-têtes pour les requêtes HTTP et utiliser une adresse IP spécifique avec http.Client et http.Transport ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 02:48:29408parcourir

How do I set headers for HTTP requests and use a specific IP address with http.Client and http.Transport?

Définition des en-têtes pour les requêtes avec http.Client et http.Transport

Lorsque vous effectuez des requêtes HTTP avec plusieurs adresses IP disponibles, il est nécessaire de spécifiez l’adresse IP souhaitée pour les connexions sortantes. Cela peut être accompli en utilisant les structures http.Client et http.Transport.

Création d'un numéroteur avec une adresse IP spécifique

Tout d'abord, créez une instance net.Dialer et définissez le champ LocalAddr à l’adresse IP souhaitée. Dans votre code, vous avez :

<code class="go">tcpAddr := &net.TCPAddr{
    IP: addrs[3].(*net.IPNet).IP, // Choosing ip address number 3
}
d := net.Dialer{LocalAddr: tcpAddr}</code>

Personnalisation du http.Transport

Ensuite, créez une instance http.Transport et configurez son champ Dial avec le numéroteur personnalisé :

<code class="go">transport := &http.Transport{
    Dial:                (&net.Dialer{LocalAddr: tcpAddr}).Dial,
    TLSHandshakeTimeout: 10 * time.Second,
}</code>

Création du http.Client

Enfin, créez une instance http.Client et définissez son champ Transport sur le transport personnalisé :

<code class="go">client := &http.Client{
    Transport: transport,
}</code>

Définition des en-têtes de requête

Pour définir les en-têtes d'une requête spécifique, vous devez créer un objet http.Request et utiliser la méthode Set sur son champ Header :

<code class="go">req, err := http.NewRequest("GET", "https://www.whatismyip.com/", nil)
if err != nil {
    // Handle error
}

req.Header.Set("name", "value")</code>

Utilisation du client configuré

Une fois que vous avez défini les en-têtes, vous pouvez utiliser la méthode Do de l'instance client pour exécuter la requête :

<code class="go">resp, err := client.Do(req)
if err != nil {
    // Handle error
}

// Handle the response</code>

En suivant ces étapes, vous pouvez définir des en-têtes pour les requêtes HTTP tout en utilisant une adresse IP spécifique pour les connexions sortantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn