带超时的http,get、post请求

ronow2cn · · 3637 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

//get请求 func HttpGetT(addr string, timeout int) (ret string, err error) { if timeout < 0 { timeout = 5 } client := &http.Client{ Transport: &http.Transport{ Dial: func(netw, addr string) (net.Conn, error) { conn, err := net.DialTimeout(netw, addr, time.Second*time.Duration(timeout)) //设置建立连接超时 if err != nil { return nil, err } conn.SetDeadline(time.Now().Add(time.Second * time.Duration(timeout))) //设置发送接受数据超时 return conn, nil }, }, } res, err := client.Get(addr) if err != nil { return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { return } ret = string(body) return } //post请求 func HttpPostT(addr string, data url.Values, timeout int) (ret string, err error) { if timeout < 0 { timeout = 5 } client := &http.Client{ Transport: &http.Transport{ Dial: func(netw, addr string) (net.Conn, error) { conn, err := net.DialTimeout(netw, addr, time.Second*time.Duration(timeout)) //设置建立连接超时 if err != nil { return nil, err } conn.SetDeadline(time.Now().Add(time.Second * time.Duration(timeout))) //设置发送接受数据超时 return conn, nil }, }, } res, err := client.PostForm(addr, data) if err != nil { return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { return } ret = string(body) return }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3637 次点击  
加入收藏 微博
5 回复  |  直到 2017-09-07 02:44:33
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传