我有一個通過JSON-RPC服務響應的python服務器。這是來自服務器的示例響應。JSON RPC客戶端轉到
'{"jsonrpc": "2.0", "result": "Peer 1: local 10.10.0.2 remote 10.10.0.1 state CONNECT\\nPeer 2: local 10.10.0.18 remote 10.10.0.17 state ESTABLISHED\\nPeer 3: local 10.10.0.10 remote 10.10.0.9 state ESTABLISHED", "id": "839732f9-cf36-46ff-8b9b-6120250d9ce5"}'
這是我需要向服務器發送請求:
'{"method":"echo","jsonrpc":"2.0","params":["test_params"],"id":"839732f9-cf36-46ff-8b9b-6120250d9ce5"}'
這裏是我的客戶有去語:
package main
import (
"fmt"
"log"
"net"
"net/rpc/jsonrpc"
)
type Args struct {
jsonrpc, id string
}
func main() {
conn, err := net.Dial("tcp", "11.21.22.221:8080")
if err != nil {
panic(err)
}
defer conn.Close()
args := Args{"2.0", "d87198f0-af92-49f8-9a7d-ab8bed5c4d17"}
var reply string
c := jsonrpc.NewClient(conn)
err = c.Call("echo", args, &reply)
if err != nil {
log.Fatal("error:", err)
}
fmt.Printf("Response: %d", reply)
}
但是,當我運行這個客戶端,它沒有發送任何參數。相反,它發送像這樣的空params:
'{"method":"echo","params":[{}],"id":0}\n
有人可以幫我告訴我正在犯什麼錯誤嗎?我是一個新手去語言。
謝謝。
我懷疑這與jsonrpc和id是小寫的,因此私有的Args結構。如果您正在調用的API需要小寫參數,則可以使用結構標籤來解決該問題 – rob74
非常感謝。這個標籤有助於在一定程度上添加參數,但是,我需要添加標籤到實際的JSON本身 - 如何添加jsonrpc並編輯id值 ''{「method」:「echo」,** 「jsonrpc」:「2.0」**,「params」:[「test_params」],**「id」:「839732f9-cf36-46ff-8b9b-6120250d9ce5」**} – Ganesh
@ rob74或某人請告訴我我如何編輯在JSON RPC請求中傳遞的id值,甚至是將jsonrpc版本與JSON一起添加(jsonrpc 2.0是必需的)? – Ganesh