我正在使用 ZSI 2.1 并使用 wsdl 文件,该文件指定类型为“appStatusResponse”的“postAppStatusResponse”消息,其定义为:
<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
postAppStatusResponse 的 dir() 是:
['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']
postAppStatusResponse._postAppStatusResponse 的 dir() 是:
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
我使用“wsdl2py --complexType”生成文件,并且能够使用包含的“get_element_...”函数毫无问题地提取请求消息数据。我还编写了其他 ZSI Web 服务,它们可以毫无问题地返回更简单的消息。但是这个...我尝试了许多不同的方法来发送此消息,但没有找到一种有效的方法。
ZSI 的存在肯定是为了让这种事情变得更简单吗?任何人都可以帮助我解决我在这里缺少的任何事情吗?(我试图从长 xml 文件和代码列表中为您省去无关数据,但当然可以根据要求提供它们。)