使用Python和SOAPpy生成WSDL

时间:2008-11-07 18:05:09

标签: python soap wsdl soappy zsi

首先,我承认我是Web服务的新手,虽然我熟悉HTML和基本Web内容。我使用Python创建了一个快速而肮脏的Web服务,该服务调用MySQL数据库中的存储过程,该服务只返回BIGINT值。我想在Web服务中返回此值,并且我想生成一个我可以为Web开发人员提供的WSDL。我可以补充一点,存储过程只返回一个值。

以下是一些示例代码:

#!/usr/bin/python

import SOAPpy
import MySQLdb

def getNEXTVAL():
    cursor = db.cursor()
    cursor.execute( "CALL my_stored_procedure()" )  # Returns a number
    result=cursor.fetchall()

    for record in result:
        return record[0]

db=MySQLdb.connect(host="localhost", user="myuser", passwd="********", db="testing")
server = SOAPpy.SOAPServer(("10.1.22.29", 8080))
server.registerFunction(getNEXTVAL)
server.serve_forever()

我想生成一个我可以提供给Web人员的WSDL,我想知道是否可以让SOAPpy为我生成一个。这可能吗?

3 个答案:

答案 0 :(得分:11)

去年我尝试编写Python Web服务时,我最终使用ZSI-2.0(类似于SOAPpy的继承人)和paper available on its web

基本上我手工编写了我的WSDL文件,然后使用ZSI的东西为我的客户端和服务器代码生成存根。我不会将这种体验描述为愉快,但应用程序确实有效。

答案 1 :(得分:1)

  

我想生成一个我可以给网络人员的WSDL,....

您可以尝试soaplib。它具有按需WSDL生成。

答案 2 :(得分:1)

对不起几天前的问题。现在我可以成功调用服务器了。提供了一个演示:

def test_soappy():
    """test for SOAPpy.SOAPServer
    """
    #okay
    # it's good for SOAPpy.SOAPServer.
    # in a method,it can have morn than 2 ws server.
    server = SOAPProxy("http://localhost:8081/")
    print server.sum(1,2)
    print server.div(10,2)