最近的go项目遇见这个问题,记录一下,问题起因是调用别的项目组接口时,接口由http更改为https,之前调试通过的调用接口推送信息方式返回的request请求报错如下:x509: certificate signed by unknow n authority
几番查找之后修改完毕,更改如下
1.引入 "crypto/tls" 包
2.定义TLSClientConfig,忽略证书校验
原写法
//发起请求
func Request(url string, header http.Header, method string, params io.Reader) (status string, resHead http.Header, body []byte, res *http.Response, err error) {
defer func() { //必须要先声明defer,否则不能捕获到panic异常
if err := recover(); err != nil {
fmt.Println("request中panic了,消息:", err) //这里的err其实就是panic传入的内容
return
}
}()
tr := &http.Transport{
DisableKeepAlives: true,
}
client := &http.Client{}
req, err := http.NewRequest(method, url, params)
if err != nil {
//fmt.Println(err)
return
}
req.Header = header
res, err = client.Do(req)
if err != nil {
return
}
defer func() {
if err = res.Body.Close(); err != nil {
logger.Error("request 请求中返回的body关闭失败:" + err.Error())
}
}()
bodyByte, err := ioutil.ReadAll(res.Body)
return res.Status, res.Header, bodyByte, res, nil
}
更改代码段即可
tr := &http.Transport{
DisableKeepAlives: true,
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}