使用 HTTP GET 请求拨打 tcp i/o 超时
dial tcp i/o timeout with HTTP GET request
运行 出现了一些错误,我一定是忽略了什么。
我该如何调试呢?断开连接?
我阅读了以下内容:
golang - Why net.DialTimeout get timeout half of the time?
golang get massive read tcp ip:port i/o timeout in ubuntu 14.04 LTS
此处创建错误:
https://github.com/golang/go/blob/b115207baf6c2decc3820ada4574ef4e5ad940ec/src/net/net.go#L179
目标:
向 url.
发送 Get 请求
预期结果:
return 正文在 JSON.
遇到的问题:
I/O超时
它适用于 Postman
编辑:
我添加了修改后的超时...
Edit2:跟踪错误
邮递员请求:
GET /v2/XRP-EUR/candles?interval=1h HTTP/1.1
Host: api.bitvavo.com
邮递员结果(1440 行):
[
[
1609632000000,
"0.17795",
"0.17795",
"0.17541",
"0.17592",
"199399.874013"
],
[
1609628400000,
"0.17937",
"0.18006",
"0.17622",
"0.17852",
"599402.631894"
],
[
1609624800000,
"0.18167",
"0.18167",
"0.17724",
"0.17984",
"579217.962574"
],.....
代码:
package main
import (
"fmt"
"net/http"
"io/ioutil"
"time"
)
func main() {
url := "https://api.bitvavo.com/v2/XRP-EUR/candles?interval=1h"
method := "GET"
client := &http.Client {
}
client.Timeout = time.Second * 60
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
结果:
Get "https://api.bitvavo.com/v2/XRP-EUR/candles?interval=1h": dial tcp 65.9.73.10:443: i/o timeout
本地环境,防火墙不允许golang拨tcp..
它仍然允许 url 通过 (DNS)
解析为 ip
我在 docker 容器内构建时遇到了这个问题。
不知道为什么,但是在 docker swarm leave --force
和 systemctl restart docker
之后构建成功了。
运行 出现了一些错误,我一定是忽略了什么。 我该如何调试呢?断开连接?
我阅读了以下内容:
golang - Why net.DialTimeout get timeout half of the time?
golang get massive read tcp ip:port i/o timeout in ubuntu 14.04 LTS
此处创建错误: https://github.com/golang/go/blob/b115207baf6c2decc3820ada4574ef4e5ad940ec/src/net/net.go#L179
目标:
向 url.
发送 Get 请求
预期结果:
return 正文在 JSON.
遇到的问题:
I/O超时
它适用于 Postman
编辑:
我添加了修改后的超时...
Edit2:跟踪错误
邮递员请求:
GET /v2/XRP-EUR/candles?interval=1h HTTP/1.1
Host: api.bitvavo.com
邮递员结果(1440 行):
[
[
1609632000000,
"0.17795",
"0.17795",
"0.17541",
"0.17592",
"199399.874013"
],
[
1609628400000,
"0.17937",
"0.18006",
"0.17622",
"0.17852",
"599402.631894"
],
[
1609624800000,
"0.18167",
"0.18167",
"0.17724",
"0.17984",
"579217.962574"
],.....
代码:
package main
import (
"fmt"
"net/http"
"io/ioutil"
"time"
)
func main() {
url := "https://api.bitvavo.com/v2/XRP-EUR/candles?interval=1h"
method := "GET"
client := &http.Client {
}
client.Timeout = time.Second * 60
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
结果:
Get "https://api.bitvavo.com/v2/XRP-EUR/candles?interval=1h": dial tcp 65.9.73.10:443: i/o timeout
本地环境,防火墙不允许golang拨tcp..
它仍然允许 url 通过 (DNS)
我在 docker 容器内构建时遇到了这个问题。
不知道为什么,但是在 docker swarm leave --force
和 systemctl restart docker
之后构建成功了。