首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自gorilla/rpc JSON RPC服务的无响应

来自gorilla/rpc JSON RPC服务的无响应
EN

Stack Overflow用户
提问于 2013-07-03 23:34:30
回答 1查看 1.4K关注 0票数 3

我正在研究如何使用gorilla web toolkit创建一个简单的RPC。我使用了他们文档中的示例,并在Chrome中使用Advanced Rest Client进行测试,并使用

代码语言:javascript
复制
http://localhost:1111/api/ 

并发布以下原始JSON有效负载:

代码语言:javascript
复制
{"method":"HelloService.Say","params":[{"Who":"Test"}]}

这将到达服务器,我知道这一点,因为我正在记录它(参见下面的代码),我得到了一个200OK响应。然而,我得到的结果是"Response I contain data“

我期待在下面的Say方法中定义的JSON回复消息。对于问题是什么,有人有什么建议吗?

代码语言:javascript
复制
package main

import (
    "gorilla/mux"
    "gorilla/rpc"
    "gorilla/rpc/json"
    "log"
    "net/http"
)  

type HelloArgs struct {
    Who string
}

type HelloReply struct {
    Message string
}

type HelloService struct{}

func (h *HelloService) Say(r *http.Request, args *HelloArgs, reply *HelloReply) error {
    log.Printf(args.Who)
    reply.Message = "Hello, " + args.Who + "!"
    log.Printf(reply.Message)
    return nil
}

func main() {
    r := mux.NewRouter()    
    jsonRPC := rpc.NewServer()
    jsonCodec := json.NewCodec()
    jsonRPC.RegisterCodec(jsonCodec, "application/json")
    jsonRPC.RegisterCodec(jsonCodec, "application/json; charset=UTF-8") // For firefox 11 and other browsers which append the charset=UTF-8
    jsonRPC.RegisterService(new(HelloService), "")
    r.Handle("/api/", jsonRPC)  
    http.ListenAndServe(":1111", r)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-26 04:09:47

这是因为gorilla/rpc/json实现了JSON-RPC,请求中需要三个参数:方法参数id

在JSON-RPC中没有id的请求被称为通知,并且没有响应。

有关更多详细信息,请查看specification

因此,在您的示例中,您需要使用以下JSON:

代码语言:javascript
复制
{"method":"HelloService.Say","params":[{"Who":"Test"}], "id":"1"}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17452199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档