package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"net"
"time"
)
func main() {
proxyAddr := "http://10.0.55.22:8080/" // proxy address
url := "http://www.baidu.com/"
cli := NewHttpClient(proxyAddr)
data,_ := HttpGET(cli, url)
fmt.Println(string(data))
}
func NewHttpClient(proxyAddr string) *http.Client {
proxy, err := url.Parse(proxyAddr)
if err != nil {
return nil
}
netTransport := &http.Transport{
//Proxy: http.ProxyFromEnvironment,
Proxy: http.ProxyURL(proxy),
Dial: func(netw, addr string) (net.Conn, error) {
c, err := net.DialTimeout(netw, addr, time.Second*time.Duration(10))
if err != nil {
return nil, err
}
return c, nil
},
MaxIdleConnsPerHost: 10, //每个host最大空闲连接
ResponseHeaderTimeout: time.Second * time.Duration(5), //数据收发5秒超时
}
return &http.Client{
Timeout: time.Second * 10,
Transport: netTransport,
}
}
func HttpGET(client *http.Client, url string) (body []byte, err error) {
rsp, err := client.Get(url)
if err != nil {
return
}
defer rsp.Body.Close()
if rsp.StatusCode != http.StatusOK || err != nil{
err = fmt.Errorf("HTTP GET Code=%v, URI=%v, err=%v", rsp.StatusCode, url, err)
return
}
return ioutil.ReadAll(rsp.Body)
}
————————————————
版权声明:本文为优快云博主「左耳朵猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/Nick_666/article/details/82596289```