如何使用javascript客户端和Python服务器调试txJSON-Rpc调用?

时间:2012-01-12 16:13:54

标签: python rpc json-rpc

我已经实现了一个wxPython应用程序,其中还包含一个Twisted txJSONrpc服务器。这是我的RPC"服务器&#34 ;;我可以使用TCP套接字调用它并发出命令。

在txjsonrpc中有一个名为client_subhandled.py的Python测试脚本我曾经测试过,它调用并从RPC服务器接收答案,因此Python客户端/服务器通信可以工作。

但是,我需要从javascript而不是Python中进行JSON RPC调用。为此,我使用了一个小的java applet,它允许你从javascript打开一个TCP套接字并对它进行读写(java_socket_bridge.js)。这也有效,我测试的不是使用JSON RPC协议,而是使用简单的扭曲回声协议发送和接收纯文本。

问题是使用javascript作为客户端,我似乎无法让rpc JSON调用工作。有没有办法在txJSONrpc中调试传入的JSON rpc调用?理想情况下,我希望看到服务器中有哪些JSON对象,以确定它们是否符合要求。

谢谢!

from twisted.internet import wxreactor  # socket library
wxreactor.install()                     # for using twisted along with wxPython

# using netstring TCP protocol
from txjsonrpc.netstring import jsonrpc
from twisted.web import server

# import twisted reactor *only after* installing wxreactor
from twisted.internet import reactor

myreactor = reactor

def register(application):
    # initialise and run the TWISTED reactor
    reactor.registerWxApp(application)
    #rpcCom.myreactor.listenTCP(9000, rpcCom.EchoServerFactory())
    reactor.listenTCP(9000, factory)
    reactor.run()

class Example(jsonrpc.JSONRPC):
    """An example object to be published."""

    def jsonrpc_echo(self, x):
        """Return all passed args."""
        print "echo called"
        return x

class Testing(jsonrpc.JSONRPC):

    def jsonrpc_getList(self):
        """Return a list."""
        return [1,2,3,4,'a','b','c','d']

class Math(jsonrpc.JSONRPC):
    """
    An example object to be published.
    """
    def jsonrpc_add(self, a, b):
        """
        Return sum of arguments.
        """
        return a + b

factory = jsonrpc.RPCFactory(Example)
factory.putSubHandler('math', Math)
factory.putSubHandler('testing', Testing)

factory.addIntrospection()

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用Wireshark

注意,在localhost上捕获时似乎存在一些问题;)