我试着写客户端和服务器在GoLang SOAP服务。我用qazxsw POI
我能够成功来电来邮终点,但不能够调用PUT。以下是我有问题
我试过代码:客户端代码:
https://github.com/dustin/go-coap for this.
客户代码:
req := coap.Message{
Type: coap.Confirmable,
Code: coap.POST,
MessageID: 12345,
Payload: []byte(`Hello CoAP Server `),
}
path := "/App"
if len(os.Args) > 1 {
path = os.Args[1]
}
req.SetOption(coap.ETag, "weetag")
req.SetPathString(path)
c, err := coap.Dial("udp", "localhost:5683")
rv, err := c.Send(req)
对于POST和PUT请求服务器代码:
req := coap.Message{
Type: coap.Confirmable,
Code: coap.PUT,
MessageID: 12345,
Payload: []byte(`Hello CoAP Server `),
}
path := "/App/fb" //here fb is app id and this can be anything
if len(os.Args) > 1 {
path = os.Args[1]
}
req.SetOption(coap.ETag, "weetag")
req.SetPathString(path)
c, err := coap.Dial("udp", "localhost:5683")
rv, err := c.Send(req)
这里是由PUT请求更新的应用程序服务器代码。在这里,我不知道我怎么可以指定端点在CoAP协议PUT。有人建议我怎么可以创建这个端点mux := coap.NewServeMux()
// TODO-later: use UDP/coap
mux.Handle("/App", coap.FuncHandler(Register))
mux.Handle("/App/{AppID}", coap.FuncHandler(UpdateApp))
err := coap.ListenAndServe("udp", ":5683", mux)
为PUT?
甚至让我知道如果有一个CoAP协议围棋服务更好的去图书馆吗?
根据这个例子:
mux.Handle("/App/{AppID}", coap.FuncHandler(UpdateApp))
看起来像一个中间人COAP处理只能由URI约束。我认为你必须自己处理不同类型的请求。
与不能识别的或不支持的方法的代码的请求必须生成一个4.05(不允许的方法)捎带响应。
来源:https://github.com/dustin/go-coap/blob/master/example/server/coap_server.go
可惜我没学去,从来没有使用过中间人COAP所以不能显示摘要。虽然我认为这将是很容易:你只需要回响应与非4.05用相同的MID和令牌。