// EncodeClientRequest는 JSON-RPC 클라이언트 요청에 대한 매개 변수를 인코딩 EncodeClientRquest & & DecodeClientResponse와
func (c *CallClient) Wallet(method string, req, rep interface{}) error {
client := &http.Client{}
data, _ := EncodeClientRequest(method, req)
reqest, _ := http.NewRequest("POST", c.endpoint, bytes.NewBuffer(data))
resp, err := client.Do(reqest)
if err != nil {
return err
}
defer resp.Body.Close()
io.Copy(ioutil.Discard, resp.Body)
return DecodeClientResponse(resp.Body, rep)
}
아래 코드로 RPC를 호출하는 HTTP를 사용하고 있습니다.
func EncodeClientRequest(method string, args interface{}) ([]byte, error) {
c := &clientRequest{
Version: "2.0",
Method: method,
Params: [1]interface{}{args},
Id: uint64(rand.Int63()),
}
return json.Marshal(c)
}
// DecodeClientResponse는 // 인터페이스의 응답으로 클라이언트 요청의 응답 본문을 디코딩.
func DecodeClientResponse(r io.Reader, reply interface{}) error {
var c clientResponse
if err := json.NewDecoder(r).Decode(&c); err != nil {
return err
}
if c.Error != nil {
return fmt.Errorf("%v", c.Error)
}
if c.Result == nil {
return errors.New("result is null")
}
return json.Unmarshal(*c.Result, reply)
}
그리고 EOF 오류가 발생했습니다.
두 제안을 시작합니다 : 1) 2) 원시 요청 및 응답을 로그인 오류를 무시하지 않습니다. – Marc