Генерация WSDL с использованием Python и SOAPpy - PullRequest
13 голосов
/ 07 ноября 2008

Прежде всего, я признаю, что я новичок в веб-службах, хотя я знаком с HTML и основными веб-материалами. Я создал быстрый и грязный веб-сервис с использованием Python, который вызывает хранимую процедуру в базе данных MySQL, которая просто возвращает значение BIGINT. Я хочу вернуть это значение в веб-сервис и хочу создать 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()

Я хочу сгенерировать WSDL, который я могу дать веб-пользователям, и мне интересно, возможно ли, чтобы SOAPpy просто сгенерировал один для меня. Это возможно?

Ответы [ 3 ]

11 голосов
/ 10 ноября 2008

Когда я пытался написать веб-сервис Python в прошлом году, я использовал ZSI-2.0 (что-то вроде наследника SOAPpy) и бумагу , доступную в сети .

По сути, я написал свой WSDL-файл вручную, а затем использовал материал ZSI для генерации заглушек для кода моего клиента и сервера. Я бы не назвал этот опыт приятным, но приложение работало.

1 голос
/ 01 декабря 2011

Извините за вопрос несколько дней назад. Теперь я могу успешно вызвать сервер. Демонстрация предоставляется:

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)
1 голос
/ 08 ноября 2008

Я хочу сгенерировать WSDL, который я могу дать веб-пользователям ....

Вы можете попробовать soaplib . Имеет генерацию WSDL по требованию.

...