2008-11-07 37 views
13

Trước hết, tôi sẽ thừa nhận tôi là người mới làm quen với các dịch vụ web, mặc dù tôi đã quen với HTML và các công cụ web cơ bản. Tôi đã tạo ra một dịch vụ web nhanh chóng và bẩn bằng cách sử dụng Python gọi các thủ tục được lưu trữ trong một cơ sở dữ liệu MySQL, mà chỉ đơn giản trả về một giá trị BIGINT. Tôi muốn trả về giá trị này trong dịch vụ web và tôi muốn tạo một WSDL mà tôi có thể cung cấp cho các nhà phát triển web của chúng tôi. Tôi có thể thêm rằng thủ tục được lưu trữ chỉ trả về một giá trị.Tạo một WSDL bằng Python và SOAPpy

Dưới đây là một số mã ví dụ:

#!/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() 

Tôi muốn tạo ra một WSDL mà tôi có thể cung cấp cho các folks web, và tôi tự hỏi nếu nó có thể có SOAPpy chỉ cần tạo một đối với tôi. Điều này có thể không?

+0

này của người dùng là tốt nhất mà tôi đã thấy cho đến nay của một người nào đó tạo ra WSDL để sử dụng với SOAPServer của họ: http://osdir.com/ml/python.pywebsvcs.general/ 2006-07/msg00015.html – Matthew

Trả lời

11

Khi tôi cố gắng viết dịch vụ web Python năm ngoái, tôi đã sử dụng ZSI-2.0 (giống như người thừa kế SOAPpy) và paper available on its web.

Về cơ bản tôi đã viết tệp WSDL của mình bằng tay và sau đó sử dụng các công cụ ZSI để tạo các sơ khai cho mã máy khách và máy chủ của tôi. Tôi sẽ không mô tả kinh nghiệm như dễ chịu, nhưng ứng dụng đã làm việc.

+0

Tôi làm theo lời khuyên của bạn và chuyển sang ZSI thay vì SOAPpy, và bằng cách sử dụng giấy và các ví dụ khác tôi * ALMOST * có nó hoạt động ngay bây giờ. Cảm ơn! – m0j0

+0

+1 cho hướng dẫn một mình. Rất tốt! – Steen

+0

Tôi đang cố gắng triển khai máy chủ SOAP của mình bằng cách sử dụng ZSI, nhưng tôi đã gặp phải một số vấn đề. Bạn có thể xem [câu hỏi này] không (https://stackoverflow.com/questions/44996528/wsdl2dispatch-raises-exception-while-generating-server-file) và [this this] (https://stackoverflow.com)/question/45005474/how-to-force-zsi-to-accept-application-soapxml)? –

1

Tôi muốn tạo ra một WSDL mà tôi có thể cung cấp cho các folks web, ....

Bạn có thể thử soaplib. Nó có thế hệ WSDL theo yêu cầu.

1

Xin lỗi câu hỏi vài ngày trước. Bây giờ tôi có thể gọi máy chủ thành công. Một bản demo được cung cấp: nỗ lực

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) 
Các vấn đề liên quan