jsonrpcパッケージは、現時点ではHTTPを介したjson-rpcをサポートしていません。だから、それは使えません、ごめんなさい。
しかし、jsonrpcの仕様jsonrpchttp
は非常に単純であり、独自の(ああ、もっと良い名前を知っているといいのですが)パッケージを作成するのはおそらく非常に簡単です。
次の(恐ろしい)コードを使用して、「getinfo」を正常に呼び出すことができました。
package main
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
data, err := json.Marshal(map[string]interface{}{
"method": "getinfo",
"id": 1,
"params": []interface{}{},
})
if err != nil {
log.Fatalf("Marshal: %v", err)
}
resp, err := http.Post("http://bob:secret@127.0.0.1:8332",
"application/json", strings.NewReader(string(data)))
if err != nil {
log.Fatalf("Post: %v", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("ReadAll: %v", err)
}
result := make(map[string]interface{})
err = json.Unmarshal(body, &result)
if err != nil {
log.Fatalf("Unmarshal: %v", err)
}
log.Println(result)
}
たぶん、 rpc.ClientCodecインターフェースを実装することで少しクリーンアップできます(例についてはjsonrpc / client.goを参照してください)。次に、Goのrpcパッケージを利用できます。