If you want to execute a RPC from an external host using Python, then you should use the following code.
import requests
import json
url='http://localhost/rpc.php'
session = requests.Session()
# Login and get the session cookie.
session.post(url, data=json.dumps({
'service': 'session',
'method': 'login',
'params': {
'username': 'admin',
'password': 'xyz'
}
}))
# Execute a RPC.
response = session.post(url, data=json.dumps({
'service': 'system',
'method': 'noop',
'params': None
}))
print(response.json())
# Logout.
session.post(url, data=json.dumps({
'service': 'session',
'method': 'logout',
'params': None
}))
# This RPC should fail because of an invalid session authentication.
response = session.post(url, data=json.dumps({
'service': 'system',
'method': 'noop',
'params': None
}))
print(response.json())
session.close()