gpt4 book ai didi

戈朗 : How to simulate a POST with a form request?

转载 作者:IT王子 更新时间:2023-10-29 02:30:01 26 4
gpt4 key购买 nike

我一直在网上搜索,但找不到太多关于在 golang 测试中发布表单的信息。这是我的尝试。不过,我收到错误消息“拨号 tcp:地址::1 中的冒号太多”。如果我将地址更改为“http://localhost:8080/”,我会得到“dial tcp 127.0.0.1:8080: connection refused”。

我读到过如果将 (IPv6) 地址放在括号中,括号会解决问题,但随后我会收到无法识别的协议(protocol)错误。

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 属性实际上没有做任何事情。随心所欲地改变它,只是不要在那里发送你的请求。查看此示例程序 https://play.golang.org/p/BsH38WLkrJ

基本上,如果我更改服务器 URL,然后将请求发送到我设置的值,它不起作用,但如果我将它发送到默认值,它就可以。

另请查看来源 http://golang.org/src/net/http/httptest/server.go?s=415:1018#L65 ,以及文件底部的证书;明确硬编码为本地主机上最低的开放端口。如果您想向另一个 URL 发出请求,Listener

关于戈朗 : How to simulate a POST with a form request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com