我有一个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>
答案 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)
就是这样。