jsonrpc 패키지는 현재 HTTP를 통한 json-rpc를 지원하지 않습니다. 죄송합니다. 사용하실 수 없습니다.
그러나 jsonrpc specification은 매우 간단하며 자신의 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:[email protected]: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 패키지를 이용할 수 있습니다.
이 문제의 해결책이 아닙니까? http://stackoverflow.com/questions/8854682/go-json-rpc-too-many-colons – thwd
아니, 그건 내가 생각하는 문제의 일부분 만 해결했다. 나는 여전히 "그런 호스트가 없다"거나 다른 것들을 오류로 받는다. 내가 시도한 여러 가지 구성 중 어떤 것을 사용했는지에 따라. 그래서 나는 주소에 "http : //"를 넣을지, 사용할 네트워크, rpc 나 jsonrpc를 사용할 지 여부, Dial이나 DialHTTP를 호출할지 여부와 같은 옵션을 확인하는 것과 같은 몇 가지 작업 코드를 유용하게 사용합니다. 시도하고 그들 모두를 조정할 수있는 옵션. – ThePiachu
코드를 보여주세요! – Mostafa