使用jshttpc2连接远程python客户端的例子?

2024-10-02 06:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我对rpc服务器和wsgi还很陌生,只将其作为django等webframework的一部分使用过。在

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

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

下一步是启动服务

^{pr2}$

我知道该服务正在工作,因为当我在远程计算机上使用浏览器并浏览到http://myip.dydns.org:8080时,它会以“405方法不允许”响应,并且我在服务器shell上看到调试信息

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在localhost上进行测试。在

我找不到任何从远程机器创建客户机并获得问候函数响应的示例python代码。在

有人能帮我开始吗。在

编辑:我还有点远。但我还是无法得到回复的内容

>>> 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!"}}

但在客户身上。我不知道怎么得到结果。在

我终于解决了这个问题

我所要做的就是

>>> con.getresponse().read()

Tags: nameorgdebugimport服务器json客户机check
1条回答
网友
1楼 · 发布于 2024-10-02 06:21:34

尝试优秀的软件包requests

如果你打算用Python中的http客户机做任何事情,我强烈建议学习requests-它比Python中任何其他与http相关的模块都容易学习和使用,对我来说,在http上进行实验时,它成了某种瑞士军刀。在

下面是如何将if用于JSON-RPC的示例: https://stackoverflow.com/a/8634905/346478

相关问题 更多 >

    热门问题