I am trying to get a value from a response object in a dictionary, but I keep running into this error, am I wrong in thinking you __getitem__
is more commonly used for indexing in classes?
Here is the code:
import json
import requests
from requests.auth import HTTPBasicAuth
url = "http://public.coindaddy.io:4000/api/"
headers = {'content-type': 'application/json'}
auth = HTTPBasicAuth('rpc', '1234')
payload = {
"method": "get_running_info",
"params": {},
"jsonrpc": "2.0",
"id": 0,
}
response = requests.post(url, data=json.dumps(payload), headers=headers, auth=auth)
print("respone is: ", response['result'])
The response object is not a dictionary, you cannot use indexing on it.
If the API returns a JSON response, you need to use the
response.json()
method to decode it to a Python object:Note that you don't have to encode the request JSON data either; you could just use the
json
argument to therequest.post()
method here; this also sets the Content-Type header for you:Last but not least, if the API uses JSONRPC as the protocol, you could use the
jsonrpc-requests
project to proxy method calls for you:Just change your source code a bit like this :
It's true that response object alone can't be indexed instead for that purpose you need to return info in
json format
(in order parse response information ) which you can do so usingjson()
and Here in order to get proper string you must encode it with utf-8 (other wise your output will be something like this -u'LikeThis)