草庐IT

$HTTP客户端

全部标签

go - 如何从客户端发送 grpc 元数据

我在golang中使用grpc.Dial(server)来设置与我的服务器的grpc连接。如何通过此拨号连接(从客户端)发送元数据或自定义header? 最佳答案 我假设grpc是您的客户端连接对象。您使用来自map[string]string(提供的一些其他方法)的元数据子包创建元数据,然后通过上下文传递它,例如md:=metadata.New(map[string]string{"key1":"val1","key2":"val2"})ctx:=metadata.NewOutgoingContext(context.Backgr

google-app-engine - Mux 和 http.HandleFunc 都适用于 Google App Engine 上的 helloworld 端点

我无法让名为emptysuccess的处理程序工作。我正在将sendgrid变成一个appspot微服务。迄今为止调用http://localhost:8080/emptysuccess返回404pagenotfound这个行为是真实的dev_appserver.py和真正的appspot.com。如何让/emptysuccess工作?packagesendmailimport("fmt""github.com/sendgrid/sendgrid-go""net/http""google.golang.org/appengine""github.com/gorilla/mux""goo

go - 服务器和客户端之间明显的死锁

我有一个测试函数,它既创建服务器又生成充当客户端的goroutine。现在,只需从客户端向服务器发送一条消息就可以了,但是如果我想创建一个交换,它们似乎会死锁,因为测试永远不会运行到完成(如果没有设置r/w截止日期)。例如,我希望客户端向服务器发送消息,服务器复制该消息并将其发送回客户端,然后客户端验证接收到的消息是否相同。这是我的测试代码:funcTestSendAwait(t*testing.T){m:="HelloWorld"gofunc(){conn,err:=net.Dial("tcp",testingAddr)iferr!=nil{t.Fatal(err)}defercon

python - 无法使用python客户端连接到go grpc服务器

我有一个在Go中运行的grpc服务器。我无法使用python客户端调用方法。不知道出了什么问题。我收到以下错误_RPC的会合以(StatusCode.UNIMPLEMENTED,method:/com.test/myMethod)>结束知道哪里出了问题吗?Go客户端能够正常通信。我还按照说明生成了stubhttps://grpc.io/docs/tutorials/basic/python.htmlpython-mgrpc_tools.protoc-I../../protos--python_out=.--grpc_python_out=.../../protos/route_guid

http - 为什么推荐使用ctx作为第一个参数?

作为documentation说DonotstoreContextsinsideastructtype;instead,passaContextexplicitlytoeachfunctionthatneedsit.TheContextshouldbethefirstparameter,typicallynamedctx但是我发现,在典型的http请求处理函数中,一个http.Request对象有一个.Context()方法可以获取http请求关联的上下文。那么为什么建议在这些函数中使用上下文作为第一个参数呢?在这种情况下这样做合理吗?我知道这不是绝对规则。但我想知道为什么Handle

go - 为什么没有填充此 HTTP 请求的响应字段?

字段的注释Response在类型http.Request如下。//Responseistheredirectresponsewhichcausedthisrequest//tobecreated.Thisfieldisonlypopulatedduringclient//redirects.Response*Response但是,在我看来,这个字段在请求期间没有被填充,因为它暗示它是。考虑以下示例:packagemainimport("net/http""log""fmt")funchandleA(writerhttp.ResponseWriter,request*http.Reque

go - 在 net/http golang 中链接中间件

我正在尝试向授权中间件添加上下文。ContextHandler是一个处理程序,它将传递给api处理程序以处理连接和配置变量。结构方法ServeHTTP也被添加到ContextHandler中,以便它满足net/Http接口(interface)以正确处理请求。CheckAuth是接受检查token验证等请求的中间件,如果token有效,则执行ServeHTTP方法,如果无效,则在响应中返回适当的错误。代码可以编译,但我在ServeHTTP方法中遇到错误。typeContextHandlerstruct{*AppContextHandlerfunc(*AppContext,http.Re

http - go 程序在执行数小时后系统地因 semacquire 问题崩溃

这是我的代码的摘录:funcsendTo(urlstring,someDataPoints[]DataPoint){ro:=&grequests.RequestOptions{JSON:someDataPoints,InsecureSkipVerify:false}grequests.Post(url,ro)return}funcforward(someDataPoints[]DataPoint)int{endpoint:="https://example.org"gosendTo(endpoint,someDataPoints)}forward函数每秒被调用大约100次。该程序运行了

http - 我优雅的停止 http.ListenAndServe 失败

我是一名新手Go程序员。我正在编写一个Web应用程序,我需要服务器在关闭之前等到发出事件请求。我写了一个等待5秒回答的处理程序。如果我发出请求并停止服务器(在5秒之前),我会收到“无法连接”错误。有一种方法可以停止监听新请求并等待事件请求完成吗?这里是我的例子funcmain(){log.Infof("Starting(PID%d)...",os.Getpid())stop:=make(chanos.Signal,1)signal.Notify(stop,syscall.SIGTERM)signal.Notify(stop,syscall.SIGINT)listenAt:="127.0

go - 服务器客户端连接通过 stdio

有一个客户端和一个服务器通过stdio进行通信。我想我基本上对标准输入和标准输出感到困惑。我对stdio有一些疑问。服务器是否从客户端写入的标准输入或标准输出读取请求?服务器是否将响应写入客户端可以读取的标准输入或标准输出?服务器端连接部分代码如下。case"stdio":log.Println("server:readingonstdin,writingonstdout") 最佳答案 很难说这个程序在做什么(因为只有一部分)。看起来您有一个ReadWriteCloser的实现,它从stdin读取并写入stdout(以及switch