golang GET http、https、代理方式

package utils

import (
    "crypto/tls"
    "encoding/json"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "time"
)

func GET(url string, reply interface{}) (err error) {
    var (
        v        []byte
        response *http.Response
    )

    response, err = http.Get(url)

    if err != nil {
        return
    }

    if response == nil {
        return
    }

    defer response.Body.Close()

    if v, err = ioutil.ReadAll(response.Body); err != nil {
        return
    }

    return json.Unmarshal(v, reply)
}

func HttpsGET(url string, reply interface{}) (err error) {
    var (
        v        []byte
        response *http.Response
    )

    tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }
    client := &http.Client{Transport: tr}
    response, err = client.Get(url)

    //response, err = http.Get(url)

    if err != nil {
        return
    }

    if response == nil {
        return
    }

    defer response.Body.Close()

    if v, err = ioutil.ReadAll(response.Body); err != nil {
        return
    }
    log.Printf("[GET]%#v", string(v))

    return json.Unmarshal(v, reply)
}

/*
步骤一:
引入 "crypto/tls" 包

步骤二:
定义TLSClientConfig,忽略证书校验:

tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }

步骤三:
修改

client := &http.Client{}

client := &http.Client{Transport: tr}
*/

//使用代理服务的HTTP Get方法
func ProxyGet(proxy func(_ *http.Request) (*url.URL, error), url string) (resp *http.Response, err error) {

    transport := &http.Transport{Proxy: proxy, TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
    client := &http.Client{Transport: transport,Timeout:3*time.Second}

    return client.Get(url)

}

func ProxyHttpsGet(proxy func(_ *http.Request) (*url.URL, error), url string,reply interface{})(err error)  {
    var (
        v        []byte
        response *http.Response
    )

    tr := &http.Transport{
        Proxy: proxy,
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }
    client := &http.Client{Transport: tr,Timeout:3*time.Second}
    response, err = client.Get(url)

    //response, err = http.Get(url)

    if err != nil {
        return
    }

    if response == nil {
        return
    }

    defer response.Body.Close()

    if v, err = ioutil.ReadAll(response.Body); err != nil {
        return
    }
    log.Printf("[GET]%#v", string(v))

    return json.Unmarshal(v, reply)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值