3
package main

import "rpc/jsonrpc"
import "fmt"

func main() {
    rc, e := jsonrpc.Dial("tcp", "user:pass@localhost:8332")
    if e != nil {fmt.Print(e);return;}

    var blocks float64
    rc.Call("getblockcount", "", &blocks)
    if e != nil {fmt.Print(e); return;}
    fmt.Print("%f blocks", blocks)
}

次のエラーが発生します。 dial tcp user:pass@localhost:8332: too many colons in address user:pass@localhost:8332

rpc接続を認証するにはどうすればよいですか?

4

2 に答える 2

2

Go rpc / jsonrpcパッケージ(より一般的には、rpcパッケージ)は認証をサポートしていませんjsonrpc.Dialの有効な文字列は、基になるnet.Dial関数の2番目の引数のドキュメントに記載されています。

しかし、接続しようとしているシステム(ビットコインかもしれませんか?)がGo jsonrpcプロトコルをサポートしているという大きな仮定もしていると思います。これは、Goで記述されていない限り、ほぼ確実にサポートされていません。

于 2011-07-06T18:24:05.743 に答える
2
testRequest := `{"jsonrpc": "1.0", "id":"", "method": "help", "params": []}`

request, e := http.NewRequest("POST", brpc.addr, strings.NewReader(testRequest))
request.SetBasicAuth(brpc.user, brpc.pass)

responce, e := brpc.c.Do(request)
// responce.Body has the result
于 2011-07-06T18:52:54.270 に答える