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)
}