Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
# This file: # http://anggtwu.net/JSONRPC/quickstart-server.py.html # http://anggtwu.net/JSONRPC/quickstart-server.py # (find-angg "JSONRPC/quickstart-server.py") # See: (find-angg "JSONRPC/quickstart-client.py") # Code from: https://json-rpc.readthedocs.io/en/latest/quickstart.html # Adapted by: Eduardo Ochs <eduardoochs@gmail.com> # Needs: (find-pip3-links "json-rpc") # (find-pip3-links "werkzeug") from werkzeug.wrappers import Request, Response from werkzeug.serving import run_simple from jsonrpc import JSONRPCResponseManager, dispatcher @dispatcher.add_method def foobar(**kwargs): return kwargs["foo"] + kwargs["bar"] @Request.application def application(request): # Dispatcher is dictionary {<method_name>: callable} dispatcher["echo"] = lambda s: s dispatcher["add"] = lambda a, b: a + b response = JSONRPCResponseManager.handle( request.data, dispatcher) return Response(response.json, mimetype='application/json') if __name__ == '__main__': run_simple('localhost', 4000, application) """ ** Based on: ** (find-angg "JSONRPC/quickstart-client.py") * (find-3EE '(eepitch-python) '(eepitch-shell2)) * (eepitch-shell2) python3 quickstart-server.py * (eepitch-python) import requests import json url = "http://localhost:4000/jsonrpc" headers = {'content-type': 'application/json'} payload1 = {"jsonrpc":"2.0", "id":0, "method":"echo", "params":["echome!"]} response = requests.post(url, data=json.dumps(payload1), headers=headers).json() response (require 'jsonrpc) (setq myid 0) (setq mymethod "add") (setq myparams [1 2]) (setq myjson0 `((method . ,mymethod) (jsonrpc . "2.0") (id . ,myid) (params . ,myparams))) (setq myjson1 (json-serialize myjson0)) (setq myextraheaders `(("Content-Type" . "application/json") ("Connection" . "Keep-Alive") ("Content-Length" . ,(number-to-string (string-bytes myjson1))))) """