2

I'm trying to make a simple request to bitcoind using perl I followed the example from the API reference, but it fails saying "401 Authorization Required"

#!/usr/bin/perl -w 

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

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

$client->ua->credentials(
    'localhost:8332', 'jsonrpc', 'bitcoinrpc' => 'mybitcoinrpcpassword'  # REPLACE WITH YOUR bitcoin.conf rpcuser/rpcpassword
    );

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;
}

Am I missing something obvious? Thanks for any help!

4

Figured it out. Turns out that (at least on Bitcoind 0.8.1 on Ubuntu), specifying the conf file when starting bitcoind doesn't do anything. I was starting it with:

bitcoind -daemon -conf=./bitcoin.conf 

from a bitcoin directory I had created /home/vijay/btc/. But bitcoind automatically uses the conf file in ~/.bitcoin/bitcoin.conf and mine was being completely ignored. Not sure what the point of the "-conf" option is!

So the solution was just to add my rpc username and password to the default conf file, which fixed the authorization failed error.

  • You can use --datadir instead. – Tom van der Woerdt May 4 '13 at 16:42
  • 1
    Sounds like a bug! Did you report it? – Noldorin Apr 10 '16 at 1:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.