spyne hello worldの例を試してみましたが、コードは基本的に次のとおりです。
class HelloWorldService(ServiceBase):
@srpc(Unicode, Integer, _returns=Array(Unicode))
def say_hello(name, times):
for i in range(times):
yield 'Hello, %s' % name
application = Application([HelloWorldService],
tns='spyne.examples.hello',
in_protocol=JsonDocument(validator='soft'),
out_protocol=JsonDocument()
)
if __name__ == '__main__':
from wsgiref.simple_server import make_server
wsgi_app = WsgiApplication(application)
server = make_server('0.0.0.0', 7789, wsgi_app)
print "rpc server start"
server.serve_forever()
そして、私は次のようなリクエストでそれに接続しようとしています:
url = "http://127.0.0.1:7789/sayhello"
data = { "name": "World", "times": 4 }
headers = { 'content-type': 'application/json' }
r = requests.post(url, data=json.dumps(data), headers=headers)
404で戻ります。
しかし、HttpRpcプロトコルを使用している場合は、リクエストの方法は問題ありません。
では、JsonDocumentプロトコルを使用するようにクライアントを実装するにはどうすればよいですか。libを使用することをお勧めしrequests
ます。