草庐IT

HTTP访问

全部标签

go - 如何捕获 "http: server closed idle connection"错误

在我的go应用程序中,我收到以下错误:“http:服务器关闭空闲连接”。我想捕获它并在遇到它时重试我的http连接。我发现这个错误来自“net/http”包,而且来自传输实现。特别是它定义了here我把它包裹在url.Error中,但这就是我能找到的全部。你知道我怎样才能真正捕捉到这个错误吗?编辑:我正在使用elasticsearchclient,它又使用net/http。我从客户端收到上述错误,并希望重试我的Elasticsearch请求,因为它是暂时的。现在我捕捉暂时性错误的方式是:ifurlErr,ok:=err.(*url.Error);ok&&(urlErr.Temporar

html - Revel 模板多个变量,在其他范围内访问一个

我有一个传递两个变量的Controllerfunc(aApp)Page()revel.Result{varg[]*G...returnc.Render(p,g)}在我的.html中,我想遍历g。是否可以在迭代中访问p?我无法管理。我的尝试如下所示{{range.g}}...//printgrelatedstuff.p{{end}}它抛出can'tevaluatefieldpintype*G。 最佳答案 Revel似乎在使用Go的模板引擎,因此我猜你应该能够使用html/template允许的任何东西,比如变量。{{$p:=.p}}{

http - 在 Golang 中使用 http.Client.Do 的空 HTTP 响应

我正在使用Go向外部Web服务发出HTTPGET请求。由于某种原因,响应的主体总是空的;内容长度始终为零字节。但是,响应状态代码始终为200,并且对Client.Do的调用不会返回任何错误。该请求需要一个Authorizationheader,因此我使用http.NewRequest/http.Client.Do模式来提交请求,如下所示。我过去曾做过类似的请求,但从未使用过需要header的GET。这似乎不太可能是原因,但我想知道这是否相关。如果有人能发现所用模式的任何潜在问题,或者可能有过类似的经历,我将不胜感激。谢谢。ifreq,err:=http.NewRequest("GET"

http - 使用 Beego 将服务器 API 转发到另一个端口

我有两个网络应用程序在同一个虚拟机中运行。一个是监听443端口的Beego,一个是8000端口的Centrifugo消息服务器。如果用户由于他的ISP不允许连接端口8000,我是否可以转发https://my.domain/chat_api(在443端口被Beego拦截)到https://my.domain:8000/chat_api(由Centrifugo在端口8000提供服务),以便我的聊天客户端连接端口443就像连接端口8000一样?如果是,在Beego的架构下如何实现? 最佳答案 你不需要在Beego中实现它。只需设置一个反

templates - 访问排序对列表的第一项

我是GoTemplates的新手,我正在尝试访问SortedPair列表中的第一个元素。我尝试了{{(index.Labels.SortedPairs1)}}{{.Name}}={{.Value}}但这不起作用,我得到无法评估类型模板中的字段名称。警报。有没有办法获取第一个元素?当它是{{range}}时,它工作正常但显示的元素太多。谢谢 最佳答案 请注意,第一个索引是0而不是1。您可以在显示其Name和Value时索引列表:{{(index.Labels.SortedPairs0).Name}}={{(index.Labels.S

curl - Beego 如何访问使用 multipart/form-data header 提交的参数?

我遇到了如下问题:当我向我的beego应用程序发出curl请求时curlhttp://localhost:8080/controller/path-XPOST-H'Content-Type:multipart/form-data;charset=UTF-8'-F“file=@file.csv;filename=file.csv”-F“name=first”我想从我的Controller访问name参数,但是当我尝试时func(c*Controller)Path(){...varnamestringc.Ctx.Input.Bind(&name,"name")//orI'vetried'n

http - 从 Go HTTP 服务器获取源 IP 地址

我正在尝试在Golang中实现一个HTTP服务器,它接收来自使用代理协议(protocol)的AmazonELB的请求。现在我想知道原始IP地址是什么,所以我在考虑使用this包。现在this据我所知,包使用原始HTTP,但我的服务器使用路由器实现了更高级别的HTTP服务器。我无法在它们之间进行翻译。我的问题是:我如何使用this库并仍然使用像gorilla/mux这样的路由器?现在this没什么特别的了包,它只是在比HTTP更低的层次上对话。例子://ListenonTCPport2000onallinterfaces.l,err:=net.Listen("tcp",":2000")

go - HTTP批量从多个API获取并保存到结构

我有以下函数可用于获取URL并将数据返回到接口(interface)(例如struct/int/whatever):varhttpClient=&http.Client{Timeout:10*time.Second}funcgetURLToTarget(urlstring,targetinterface{})error{req,err:=httpClient.Get(url)iferr!=nil{returnerr}deferreq.Body.Close()returnjson.NewDecoder(req.Body).Decode(target)}然后我有几个看起来像这样的函数:fu

无法访问cgo中的c变量

我正在尝试访问cgo中的c结构,但是请执行此操作couldnotdeterminekindofnameforC.utmpxutmpx是一个C结构体这是执行代码:/*#include#include#include#include#include*/import"C"typerecordC.utmpxfd,err:=os.Open(C._PATH_UTMPX)//thisworksfd,err:=os.Open(C.UTMPX_FILE)//error在utmpx.h文件中,有#define_PATH_UTMPX"/var/run/utmpx"#defineUTMPX_FILE_PATH

http - 禁用公用名验证 - Go HTTP 客户端

如何在gohttp客户端中禁用通用名称验证。我正在使用通用CA执行双向TLS,因此通用名称验证没有任何意义。TLSdocs说,//ServerNameisusedtoverifythehostnameonthereturned//certificatesunlessInsecureSkipVerifyisgiven.Itisalsoincluded//intheclient'shandshaketosupportvirtualhostingunlessitis//anIPaddress.ServerNamestring我不想执行InsecureSkipVerify但我不想验证通用名称。