Golang Go语言使用 http.Get() 的奇怪的问题
Golang Go语言使用 http.Get() 的奇怪的问题
系统是 Win10,工具是 goland
使用 http.Get(url)读取一段文本时,在 goland 环境中点运行按钮可以获取到,但是 go build 后在在终端运行,就返回状态码 403
我知道 403 的意思,但是为什么在 goland 中正常,而 build 后就出问题?我添加代理后使用 fiddler 抓包,看到这两种方式的请求头是一样的啊,没有看到区别
请问大手子们,在 goland 中和在终端中运行有什么差别,导致的这种问题的?
更多关于Golang Go语言使用 http.Get() 的奇怪的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
是不是终端有代理什么的
更多关于Golang Go语言使用 http.Get() 的奇怪的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
谢谢解答,刚才把 URL 写死成字符串当参数发现可以,应该是我用从终端读取输入的 URL 那部分代码有问题。谢谢你的解答
谢谢解答,我发现问题所在了。使用 fmt.Scanln(&url)从终端输入时,接收的字符串的长度原来有限制,导致输入被截断了。。
你这个 fiddler 一看不就知道的事情吗
如果程序不尊重系统代理,fiddler 抓不到的,还得上 wireshark
在Go语言中使用 http.Get()
函数时遇到奇怪的问题,通常可能涉及几个常见的方面。首先,确保你正确理解了 http.Get()
的使用方式及其返回值处理。这个函数会返回一个 *http.Response
对象和一个 error
对象。你需要检查这两个返回值来诊断问题。
-
错误处理: 确保你检查了
error
返回值。如果error
不为nil
,则应该打印或记录错误信息,因为这可能是请求失败的根本原因。 -
响应状态码: 即使
http.Get()
没有返回错误,响应的状态码仍然可能指示请求未成功(例如,404 未找到,500 服务器内部错误等)。检查response.StatusCode
来确认请求是否真正成功。 -
响应体读取: 如果状态码表明请求成功(200 OK),确保你正确读取了响应体。使用
ioutil.ReadAll(response.Body)
或io.Copy
等方法来读取数据,并在完成后关闭response.Body
以释放资源。 -
超时和重定向: 考虑是否设置了适当的客户端超时(通过
http.Client
的Timeout
字段),以及是否处理了重定向(CheckRedirect
方法)。 -
并发和锁: 如果你的应用是多线程的,确保对共享资源的访问是线程安全的。
如果以上检查后问题依旧存在,可能需要更详细的日志信息或代码审查来进一步诊断问题。