Я пытался отправить запрос на интерфейс RPC, но для интерфейса не нужны параметры. Это означает, что поле params должно быть "params":[]
, но когда я использую json.EncodeClientRequest(method string, args interface{})
, значение params всегда равно "params":[{}]
или "params":[null]
. Так что это всегда вызывает ошибку: map[code:-32602 message:Invalid method parameters]
. Как я мог установить нулевое значение для params. Далее моя структура запроса:
// request struct
type JsonRpcReq struct {
Id uint32 `json:"id"`
Url string `json:"url"`
Method string `json:"method"`
Params *interface{} `json:"params"`
JsonRpc string `json:"jsonrpc"`
}
Ошибка предложения:
// request method
func (r *JsonRpcReq) Send() (interface{}, error) {
message, err := json.EncodeClientRequest(r.Method, r.Params)
fmt.Println(string(message))
if err != nil {
return nil, err
}
...
}
Предложение запроса:
req := NewJsonRpcReq("http://finance.test.cppp.com/rpc/healthCheck", "status", nil)
Метод NewJsonRpcReq
:
func NewJsonRpcReq(url, method string, params *interface{}) *JsonRpcReq {
return &JsonRpcReq{Id: 0, Url: url, Method: method, Params: params, JsonRpc: "2.0"}
}