ビットコイン・インスティテュート

Re: 認証、​JSON RPCと​Python

ジェフ・ガージックの投稿(2010年8月3日18:58 UTC)

CPAN(Perl)で利用可能な2つのJSON RPCライブラリと、動作を検証するために私がローカルで書いた準拠Cライブラリだ。

PerlのLWPモジュールは間違いなくContent-Lengthヘッダーを設定している。HTTP 1.0では必須で、HTTP 1.1の仕様でもクライアントは「SHOULD」設定すべきとされているので、設定していなかったらむしろ驚きだ。

少し格闘した末に、CPANの最初のJSON::RPCライブラリで動かすことができた:

use JSON::RPC::Client;
use Data::Dumper;

my $client = new JSON::RPC::Client;

$client->ua->credentials(
   'localhost:8332', 'jsonrpc', 'my rpcusername' => 'my rpcpassword'   # Replace with real user/pass
    );
my @foo = $client->ua->credentials('localhost:8332', 'jsonrpc');
print "@foo\n";

my $uri = 'http://localhost:8332/';
my $obj = {
    method  => 'getinfo',
    params  => [],
 };

my $res = $client->call( $uri, $obj );

if($res){
    if ($res->is_error) {
        print "Error : ", $res->error_message;
    }
    else {
        print Dumper($res->result);
    }
}
else {
    print $client->status_line;
}

苦労したのはrealmを ‘jsonrpc’ に設定する点だ(ここがうるさい)。これはwikiにドキュメントとして書いておく。