分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
代码如下:
```
func NewHttping(method, protocol string, timeoutDuration time.Duration) *Httping {
return &Httping{
Method: method,
Protocol: protocol,
Client: &http.Client{
Timeout: timeoutDuration,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
},
}
}
func (httping *Httping) Ping(t model.TargetIp) (float64, *http.Response, error) {
var resp *http.Response
var body io.Reader
if httping.Method == "POST" {
body = bytes.NewBufferString("{}")
}
req, err := http.NewRequest(httping.Method, fmt.Sprintf("%s://%s:%d", httping.Protocol, t.IP, t.Port), body)
if t.Header != "" {
head := map[string]interface{}{}
err := json.Unmarshal([]byte(t.Header), &head)
if err != nil {
seelog.Error("[func:httping is err]", err.Error())
}
for key, val := range head {
req.Header.Add(key, val.(string))
}
}
if err != nil {
return 0, nil, err
}
duration, errIfce := utils.TimeIt(func() interface{} {
resp, err = httping.Client.Do(req)
return err
})
if errIfce != nil {
err := errIfce.(error)
return 0, nil, err
}
return duration, resp, nil
}
```
报错信息如下:
```
2019年05月13日/18:15:03 [Error] httping.go [func:HTTP StartPing ] www.youku.com - failed: Get http://www.youku.com:80: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
```
我这边设置的超时时间是10s,程序以间隔2秒的时间差循环发送求情,但是经常报错超时,我想着youku不至于这样吧,麻烦大神帮我看看问题出在什么地方了吗
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信10759 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传