python jsonrpc2客户端示例使用httplib连接到远程hello world示例?

问题描述 投票:1回答:1

我正在尝试创建一个jsonrpc2服务器,该服务器将通过http接受json,处理数据并将json返回给发出请求的客户端。

我对rpc服务器和wsgi相当陌生,仅将其用作django这样的webframework的一部分。

我正在尝试遵循jsonrpc2文档中给出的示例。 第一步是创建一个文件hello.py

def greeting(name):
    return dict(message="Hello, %s!" % name)

下一步涉及启动服务

runjsonrpc2 hello
runserver :8080

我知道该服务正在运行,因为当我在远程计算机上使用浏览器并浏览到http://myip.dydns.org:8080时 ,它将响应“ 405 Method Not Allowed”,并且我在服务器外壳上看到调试信息

DEBUG:root:jsonrpc
DEBUG:root:check method

下一步是我很难理解的内容。 我想知道如何创建python客户端以将json发送到服务并获得响应。

我试过的是:

>>> from httplib import HTTPConnection
>>> h = HTTPConnection("myip.dydns.org:8080")
>>> from json import JSONEncoder
>>> call_values = {'jsonrpc':'2.0', 'method':'greeting', 'id':'greeting'}

使用python从Web服务获取响应涉及哪些步骤。

可悲的是,jsonrpc2文档仅使用来自webtest库的TestApp在本地主机上进行测试。

我找不到任何示例Python代码,这些示例Python代码可从远程计算机创建客户端并获得Greeting函数的响应。

有人可以帮助我入门。

编辑:我走得更远。 但是我仍然无法获得回复的内容

>>> from httplib import HTTPConnection
>>> con = HTTPConnection("myip.dyndns.org:8080")
>>> import json
>>> con.request('POST', '/', json.dumps({"jsonrpc": "2.0", "method": "casoff_jsonrpc2.greeting", "id":1.0,"params":{"name":"harijay"}},ensure_ascii=False).encode('utf-8'), {'Content-Type': 'application/json;charset=utf-8'})

我看到服务器然后回显其外壳

DEBUG:root:jsonrpc
DEBUG:root:check method
DEBUG:root:check content-type
DEBUG:root:response {"jsonrpc": "2.0", "id": 1.0, "result": {"message": "Hello, harijay!"}}

但是在客户端上。 我不知道如何得到结果。

edit2:我终于解决了这个

我要做的就是

>>> con.getresponse().read()
python json httplib httplib2
1个回答
0
投票

尝试优质的包裹requests

我打算对Python中的http客户端做任何事情,我强烈建议学习requests -它比Python中的其他任何与HTTP相关的模块都易于学习和使用一个数量级,对我来说,它在实验时成为了瑞士军刀通过HTTP。

在JSON-RPC中使用if的示例在这里: https : //stackoverflow.com/a/8634905/346478

© www.soinside.com 2019 - 2024. All rights reserved.