Golang:如何用表单请求模拟帖子?
我一直在网上搜索,找不到关于在golang测试中发布表单的更多信息。这是我的尝试。但我收到错误“拨号tcp:地址::1中的冒号太多”。如果我将地址更改为“我得到”拨号tcp 127.0.0.1:8080:连接被拒绝 我已经读到,如果将(IPv6)地址放在括号中,括号将解决问题,但随后我得到了无法识别的协议错误Golang:如何用表单请求模拟帖子?,go,server,Go,Server,我一直在网上搜索,找不到关于在golang测试中发布表单的更多信息。这是我的尝试。但我收到错误“拨号tcp:地址::1中的冒号太多”。如果我将地址更改为“我得到”拨号tcp 127.0.0.1:8080:连接被拒绝 我已经读到,如果将(IPv6)地址放在括号中,括号将解决问题,但随后我得到了无法识别的协议错误 var addr = "http://::1/" h := handlers.GetHandler() server := httptest.NewServer(h) server.URL
var addr = "http://::1/"
h := handlers.GetHandler()
server := httptest.NewServer(h)
server.URL = addr
req, err := http.PostForm(addr+"login",
url.Values{"username": {"lemonparty"}, "password": {"bluewaffle"}})
if err != nil {
log.Fatal(err)
}
tl;dr
httptest.Server
中的Listener
不使用httptest.Server.URL
作为要侦听的URL。它不在乎这个值是多少。它在本地主机上侦听最低开放端口号
httptest.Server
上的URL属性实际上没有执行任何操作。你想怎么改就怎么改,只是不要把你的请求发送到那里。查看这个示例程序
基本上,如果我更改服务器URL,然后将请求发送到我将其设置为的值,则该请求不起作用,但如果我将其发送到默认值,则会起作用
还可以查看源代码以及文件底部的证书;明确硬编码为本地主机上最低的开放端口。如果您想向另一个URL发出请求,
侦听器
tl;drhttptest.Server
中的Listener
不使用httptest.Server.URL
作为要侦听的URL。它不在乎这个值是多少。它在本地主机上侦听最低开放端口号
httptest.Server
上的URL属性实际上没有执行任何操作。你想怎么改就怎么改,只是不要把你的请求发送到那里。查看这个示例程序
基本上,如果我更改服务器URL,然后将请求发送到我将其设置为的值,则该请求不起作用,但如果我将其发送到默认值,则会起作用
还可以查看源代码以及文件底部的证书;明确硬编码为本地主机上最低的开放端口。如果您想向另一个URL发出请求,
侦听器
感谢您的回复。但server.listendServe()未定义@哦,是的,我是个傻瓜,以为你在用http软件包。我将用一个合理的答案进行编辑。@ChrisW是的,URL属性实际上并不反映服务器正在侦听的位置。做了一点测试,它只是继续在localhost:2上监听,不管发生什么。如果您发送到其他地方,您的连接将被拒绝。或者更简单地说,httptest.Server
的URL
字段是一个输出,而不是一个输入。感谢您的回复。但server.listendServe()未定义@哦,是的,我是个傻瓜,以为你在用http软件包。我将用一个合理的答案进行编辑。@ChrisW是的,URL属性实际上并不反映服务器正在侦听的位置。做了一点测试,它只是继续在localhost:2上监听,不管发生什么。如果您发送到其他地方,您将被拒绝连接。或者更简单地说,httptest.Server
的URL
字段是一个输出,不是输入。http.PostForm
不会给你一个http.Request
它会给你一个http.Response
http.PostForm
不会给你一个http.Request
它会给你一个http.Response