超时和代理

package main

import (
	"io"
	"net/http"
	"net/url"
	"os"
)

func main() {
	// proxyUrl, _ := url.Parse("socks5://127.0.0.1:1080")
	proxyUrl, _ := url.Parse("http://127.0.0.1:8087")
	t := &http.Transport{
		Proxy: http.ProxyURL(proxyUrl),
	}
	// 一般主要两种,http 代理 和 shadow socks 的代码, socks5
	client := http.Client{Transport: t}
	r, _ := client.Get("https://google.com")
	defer func() { _ = r.Body.Close() }()

	_, _ = io.Copy(os.Stdout, r.Body)
	// session
	// session.Get
	// session.Post
	// session.Put
	// session.Delete
}
package main

import (
	"context"
	"net"
	"net/http"
	"time"
)

func main() {
	// https://colobu.com/2016/07/01/the-complete-guide-to-golang-net-http-timeouts/
	client := &http.Client{
		Timeout: 10 * time.Second,
		Transport: &http.Transport{
			DialContext: func(ctx context.Context, network, addr string) (conn net.Conn, e error) {
				return net.DialTimeout(network, addr, 2*time.Second)
			},
			ResponseHeaderTimeout: 5 * time.Second,
			TLSHandshakeTimeout:   2 * time.Second,
			IdleConnTimeout:       60 * time.Second,
		},
	}
	r, _ := client.Get("http://httpbin.org/delay/10")
}

  

原文地址:https://www.cnblogs.com/yzg-14/p/13281439.html