无法通过系统代理访问网络
1. 运行环境
go version go1.20.1 windows/amd64//: <> (当前使用的Go
版本,及系统版本、系统架构?)
2. 问题描述?
无法访问网址,但是我通过浏览器或者apifox都是可以正常访问的,我的网络没有问题,以下代码可直接执行
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url1 := "https://api.openai.com/dashboard/billing/credit_grants"
method := "GET"
req, err := http.NewRequest(method, url1, nil)
if err != nil {
fmt.Println(err)
return
}
var client = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
},
}
req.Header.Add("Accept", "*/*")
req.Header.Add("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2")
req.Header.Add("Authorization", "Bearer ")
req.Header.Add("Host", "api.openai.com")
req.Header.Add("OpenAI-Organization", "org-E6WE35xzA24xKfpTzZcZ4qhC")
req.Header.Add("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
req.Header.Add("Connection", "keep-alive")
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))
}
3. 您期望得到的结果?
4. 您实际得到的结果?
Get "https://api.openai.com/dashboard/billing/credit_grants": dial tcp 168.143.171.189:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
除非开启系统级(底层)代理 (如果是clash对应的则是tun模式) 否则 任何编程语言都不会直接使用到这个代理。
http.ProxyFromEnvironment
意思是从系统环境变量中获取代理配置,这通常是Linux下的比如all_proxy=socks5://ip:port go run xx.go
否则需要手动指定ip,比如
或者,手动环境变量
「Go 学堂」写了一些列的 gin 框架的底层原理知识。还有相关的使用 go 语言写的开源包系列。欢迎关注