我正在使用ZSI 2.1並從指定'appStatusResponse'消息的wsdl文件中工作,該消息的定義如下:如何使用wsdl2py生成的複雜類型在python中發送來自Web服務的響應
出現<xsd:complexType name="appStatusResponse">
<xsd:sequence>
<xsd:element name="response" type="tns:webServiceResponse" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
和 「webServiceResponse」 如下:
<xsd:complexType name="webServiceResponse">
<xsd:sequence>
<xsd:element name="responseCode" type="xsd:long"/>
<xsd:element name="responseMessage" type="xsd:string"/>
<xsd:element name="exceptionCode" type="xsd:long"/>
<xsd:element name="exceptionMessage" type="xsd:string" nillable="true" />
<xsd:element name="transactionIdentifier" type="xsd:long"/>
<xsd:element name="traceIdentifier" type="xsd:string"/>
<xsd:element name="transactionTimestamp" type="xsd:dateTime" nillable="true" />
</xsd:sequence>
</xsd:complexType>
要發送postAppStatusResponse消息,我顯然需要與webServiceResponse和appStatusResponse結構來填充它。但是,爲postAppStatusResponse消息生成的類不包含任何內容來支持此操作。 wsdl2py生成的類型文件包括appStatusResponse_Def和webServiceResponse_Def類,但我一直無法弄清楚如何使用這些來生成我需要的東西。
生成postAppStatusResponse消息看起來像這樣:
_postAppStatusResponseTypecode = Struct(pname=("http://cig.jpmchase.net/20110218/card/acq/","postAppStatusResponse"), ofwhat=[ns0.appStatusResponse_Def(pname="postAppStatusResponse", aname="_postAppStatusResponse", typed=False, encoded=None, minOccurs=1, maxOccurs=1, nillable=True)], pyclass=None, encoded="http://cig.jpmchase.net/20110218/card/acq/")
class postAppStatusResponse:
typecode = _postAppStatusResponseTypecode
__metaclass__ = pyclass_type
def __init__(self, **kw):
"""Keyword parameters:
postAppStatusResponse -- part postAppStatusResponse
"""
self._postAppStatusResponse = kw.get("postAppStatusResponse")
postAppStatusResponse.typecode.pyclass = postAppStatusResponse
在dir()postAppStatusResponse的是:
['PostAppStatusResponse', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__metaclass__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_postAppStatusResponse', 'get_element_postAppStatusResponse', 'new_postAppStatusResponse', 'set_element_postAppStatusResponse', 'typecode']
和DIR postAppStatusResponse._postAppStatusResponse的()爲:
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
我使用「wsdl2py --complexType」生成了這些文件,並且已經能夠使用包含的「get_element _...」函數可以毫無困難地提取請求消息數據。我還編寫了其他ZSI Web服務,可以毫無困難地返回更簡單的消息。但是,這個......我嘗試了許多不同的方法來發送這條消息,但還沒有找到一個可行的方法。
當然ZSI的存在使這種事情更簡單嗎?任何人都可以幫助我與我在這裏失蹤的任何東西? (我試圖讓您從長xml文件和代碼清單中獲得無關數據,但當然可以根據請求提供它們。)