I am trying to send requests to the jsonrpc server as instructed in this link https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblocktransactioncountbynumber

The command works fine in the terminal

curl http://localhost:8545 -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}'

However, when I execute it from Python as in the following script

import urllib
import urllib2
url = 'http://localhost:8545/'    
values = dict(jsonrpc = "2.0",
            method = "eth_getBlockTransactionCountByNumber",
            params = ["0xe8"],
            id =67)

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
print response.read()

It returns this error

{"id":-1,"jsonrpc":"2.0","error":{"code":-32600,"message":"Could not decode request"}}

The same error shows up when I tried

r = requests.post(url, data=str(values), allow_redirects=True)
print r.content


print subprocess.check_output(['curl', url, "-X",  "POST", "--data",  str(values)])

is there something wrong in my Python script?

1 Answer 1


I believe that your values should be encoded to json before passing to post data.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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