如何在python Web服务客户端中将HashMap作为参数传递

时间:2019-07-06 16:52:53

标签: python hashmap soap-client zeep

我有一个Java Web服务,该服务具有以HashMap作为参数的Web方法。现在,我正在使用python调用该服务。我将zeep库用于Web服务客户端。我可以调用该函数,但是服务器没有收到我的HashMap数据。服务器说它是空的(不是空而是空的)

我试图以多种方式在客户端中构造HashMap,以使服务器可以识别数据。但这不起作用。

client = Client('http://113.161.71.189/TestService/Service?wsdl', transport=transport)
signCloudMetaData = client.get_type('ns0:signCloudMetaData')()
entry = []
pageNo = ('PAGENO', 'Last')
positionIdentifider = ('POSITIONIDENTIFIER', 'test')
rectangleOffset = ('RECTANGLEOFFSET', '-30,-100')

entry.append(pageNo)
entry.append(positionIdentifider)
entry.append(rectangleOffset)

signCloudMetaData.singletonSigning = entry
client.service.request(signCloudMetaData)

该对象有一种肥皂描述:

<xs:complexType name="signCloudMetaData">
    <xs:sequence>
        <xs:element name="singletonSigning">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="key" minOccurs="0" type="xs:string"/>
                                <xs:element name="value" minOccurs="0" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

1 个答案:

答案 0 :(得分:0)

最后,我可以在同事的帮助下成功致电该服务。我将解决方案发布给像我这样有问题的人。

Java HashMap被分析为Json对象,如下所示:

  

{“条目”:[         {            “ key”:“ POSITIONIDENTIFIER”,            “值”:“测试”         },         {            “ key”:“ PAGENO”,            “ value”:“ Last”         }]}

在python中,您必须使用Dict类型构造此类对象

position={}
position.update({"key":"POSITIONIDENTIFIER"})
position.update({"value":"test"})

pageNo={}
pageNo.update({"key":"PAGENO"})
pageNo.update({"value":"Last"})

Dict = {}
Dict['entry'] = []
Dict['entry'].append(position)
Dict['entry'].append(pageNo)

就是这样。