草庐IT

$HTTP客户端

全部标签

go - 如何从请求对象获取远程客户端的 IPV4 地址

我正在使用go-gin作为服务器并使用如下代码呈现htmlfuncdashboardHandler(c*gin.Context){c.HTML(200,"dashboard",gin.H{"title":"Dashboard"})除了标题,我还想传递远程客户端的IPV4地址。我尝试使用以下代码获取IP地址,但对于本地主机,它为我提供了::1:56797作为输出。我的服务器在localhost:8080上运行ip,port,err:=net.SplitHostPort(c.Request.RemoteAddr)fmt.Println(ip+":"+port)iferr!=nil{fmt.

http - golang - 似乎无法断开 http 连接

我正在尝试测量URL的连续加载时间,但无法断开http连接并重新开始每次测量。使用此代码...funcgetloadtime(urlstring)float64{//setupclienttr:=&http.Transport{DisableKeepAlives:true}client:=&http.Client{Transport:tr}//pageloadandmeasurestart:=time.Now()_,_=client.Get(url)return(time.Since(start).Seconds())}funcmain(){fori:=0;i我得到这样的测量结果:2.

http - 为什么这个 go http 服务器在多次请求后停止响应?

我正在构建一个监听端口4242的Gohttp服务器。每个请求都会触发我程序的一个函数。一切正常,但在30/40个请求之后,它就停止响应了。我已经在没有服务器的情况下运行了整个程序(通过标准输入/标准输出与其交互)并且没有问题或错误。只有当我从http请求触发它时才会出现问题。此外,当我在这些函数中添加一些工作负载时,我会更快地遇到错误。我怀疑是内存问题,但话又说回来,如果没有服务器,就没有错误。服务器没有崩溃,也没有错误信息。我的函数代码实际上停止在随机行执行(尝试调试代码并看到例程实际上停止执行我的代码并每次都停止在随机位置)packageserverimport("encoding

sockets - 通过 TCP 处理多个客户端

好的,我刚开始学习golang,到目前为止我很喜欢它。但是我没有发现他们的文档适合入门者,这是我的问题。我想编写接受连接并向客户端写入内容的小服务器程序。到目前为止没有问题。然而,一旦它获得真正的功能,我就需要能够处理多个客户端,我认为这也是goroutines的一个很好的练习。listener,error:=net.Listen("tcp",remote)con,error:=listener.Accept()gohandleClient(&con);funchandleClient(con*net.Conn){我已经删除了大部分代码。问题是,无论我尝试什么,我都无法通过con。co

http - 如何在 go lang 的 Http Response 中打印一个 Struct

我正在使用POSTMAN在golang中处理POST请求。我希望以结构格式(json数据结构)显示响应。为了显示普通字符串,我使用了rw.Write([]byte(fmt.Sprintf("Hello,%s!",t.Name)))如何在响应体中显示Struct?(使用rw.write方法)fmt.Printf("%+v\n",m)输出到{ID:1Name:JohnSmithAddress:123MainStCity:SanFranciscoState:CAZip:94113坐标:{纬度:37.7917618经度:-122.3943405}}这就是我想要在Postman响应中准确显示的内

http - golang,从文件中读取内容,并在 HTTP 请求中作为正文数据发送

//readdatafromafileconfig.json//thecontentsofconfig.jsonis//{"key1":"...Z-DAaFpGT0t...","key2":"..."}client:=&http.Client{}dat,err:=ioutil.ReadFile("/config.json")req,err:=http.NewRequest("PUT",url,bytes.NewBuffer(dat))resp,err:=client.Do(req)然后我会从服务器收到错误信息“400BadRequest”、“无效字符'ï'正在寻找值的开头”。似乎数据没

go - HTTP 定时请求 Golang

我是Go的新手,正在尝试向多个http/https服务器生成多个请求,以检查每个Web服务器的响应时间和状态。我将URL存储在一个文本文件中,之后我决定在我的代码中添加一个自动收报机,它将在一定时间后继续在每个URL上生成这些请求(时间量以秒为单位,在每个URL旁边键入并用制表符隔开)。当我开始扫描文件中的时间时,一切都变得复杂起来,我无法找到我的错误。这是我的Go代码:packagemainimport("fmt""io/ioutil""log""net/http""strconv""strings""sync""time")funcget_resp_time(urlstring){

http - Golang 与 http 重用的意外行为

我有从某处获取token的功能,例如:funcgetToken(client*http.Client)(string,error){fmt.Printf("Startingwithtoken...\n")//TokenserviceURLapiUrl:="http://url.to.obtain.token"//Datatosendwhengettingatokendata:=url.Values{}data.Set("username","my-username")data.Set("password","my-password")//CreateaPOSTrequestreques

go - 通过公共(public)服务器使用 NAT 后面的客户端作为代理

我有一些问题要理解通过公共(public)服务器在NAT后面暴露客户端的理论,例如使用客户端作为代理(最好是SOCKS5)。我想使用Go解决这个问题,并且有一些很棒的SOCKS5Go库,所以这没问题。如果NAT后面的客户端连接到公共(public)服务器,其他用户如何连接(可能在不同的端口上)以及我应该如何转发请求?“C”是NAT背后的(单一)客户端“A”是我想用来公开客户端的公共(public)服务器“U”是一个用户(或多个用户)想通过A连接到C例如如果A(公共(public)服务器)监听端口5544和C(NAT后面的客户端连接到它,而C也有一个请求被转发到的本地SOCKS5服务器)

Golang tcp客户端服务器程序

我可以做服务器程序或客户端程序,但我不知道如何做客户端/服务器程序。有人知道这段代码有什么问题吗?谢谢。packagemainimport("net""os""bufio""io")funcmain(){listen,_:=net.Listen("tcp","localhost:9001")dial,_:=net.Dial("tcp","localhost:9002")scanner:=bufio.NewScanner(os.Stdin)forscanner.Scan(){conn,_:=listen.Accept()ifscanner.Text()=="a"{conn.Close()