Maison > développement back-end > Golang > le corps du texte

Comment utiliser un proxy avec un transport personnalisé dans Go ?

Susan Sarandon
Libérer: 2024-10-26 05:24:30
original
667 Les gens l'ont consulté

How to Use a Proxy with a Custom Transport in Go?

Programmer Go pour une utilisation proxy avec un transport personnalisé

Dans Go, vous pouvez configurer le http.Client de la bibliothèque standard pour utiliser automatiquement un proxy basé sur les variables d'environnement. Cependant, lors de l'utilisation d'un transport personnalisé, cette fonctionnalité n'est pas directement prise en charge.

La solution consiste à utiliser la méthode http.ProxyFromEnvironment. Cette méthode renvoie l'URL du proxy à utiliser pour une requête donnée en fonction de variables d'environnement telles que HTTP_PROXY et HTTPS_PROXY.

Pour utiliser un proxy avec un transport personnalisé dans Go, suivez ces étapes :

  1. Créez une instance http.Transport personnalisée :

    <code class="go">tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }</code>
    Copier après la connexion
  2. Définissez l'URL du proxy à l'aide de ProxyFromEnvironment :

    <code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
    Copier après la connexion
  3. Créez un http.Client avec le transport personnalisé :

    <code class="go">client := http.Client{Transport: PTransport}</code>
    Copier après la connexion
  4. Utilisez le client pour faire des requêtes :

    <code class="go">resp, err := client.Get(url)</code>
    Copier après la connexion

Voici un code exemple illustrant cette approche :

<code class="go">package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}

    client := http.Client{Transport: PTransport}
    resp, err := client.Get("https://jsonplaceholder.typicode.com/todos/1")
    if err != nil {
        panic(err)
    }

    bodyBytes, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Printf("GET Response = %s \n", string(bodyBytes))
}</code>
Copier après la connexion

N'oubliez pas de définir les variables d'environnement HTTP_PROXY et HTTPS_PROXY de manière appropriée pour votre serveur proxy.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!