Heim >Backend-Entwicklung >Golang >Wie verwende ich einen Proxy mit einem benutzerdefinierten Transport in Go?
Programm Go für Proxy-Nutzung mit benutzerdefiniertem Transport
In Go können Sie den http.Client der Standardbibliothek so konfigurieren, dass er automatisch einen Proxy-basierten verwendet auf Umgebungsvariablen. Bei Verwendung eines benutzerdefinierten Transports wird diese Funktionalität jedoch nicht direkt unterstützt.
Die Lösung besteht darin, die Methode http.ProxyFromEnvironment zu verwenden. Diese Methode gibt die Proxy-URL zurück, die für eine bestimmte Anfrage verwendet werden soll, basierend auf Umgebungsvariablen wie HTTP_PROXY und HTTPS_PROXY.
Um einen Proxy mit einem benutzerdefinierten Transport in Go zu verwenden, befolgen Sie diese Schritte:
Erstellen Sie eine benutzerdefinierte http.Transport-Instanz:
<code class="go">tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }</code>
Legen Sie die Proxy-URL mit ProxyFromEnvironment fest:
<code class="go">var PTransport = &http.Transport{Proxy: http.ProxyFromEnvironment}</code>
Erstellen Sie einen http.Client mit dem benutzerdefinierten Transport:
<code class="go">client := http.Client{Transport: PTransport}</code>
Verwenden Sie den Client, um Anfragen zu stellen:
<code class="go">resp, err := client.Get(url)</code>
Hier ist ein Code Beispiel, das diesen Ansatz demonstriert:
<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>
Denken Sie daran, die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY entsprechend für Ihren Proxyserver festzulegen.
Das obige ist der detaillierte Inhalt vonWie verwende ich einen Proxy mit einem benutzerdefinierten Transport in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!