Golang:如何用表单请求模拟帖子?

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

我一直在网上搜索,找不到关于在golang测试中发布表单的更多信息。这是我的尝试。但我收到错误“拨号tcp:地址::1中的冒号太多”。如果我将地址更改为“我得到”拨号tcp 127.0.0.1:8080:连接被拒绝

我已经读到,如果将(IPv6)地址放在括号中,括号将解决问题,但随后我得到了无法识别的协议错误

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;dr
httptest.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