Как передать HashMap в качестве параметра в клиенте веб-службы python - PullRequest
0 голосов
/ 06 июля 2019

У меня есть веб-сервис Java, у которого есть веб-метод с HashMap в качестве параметра. Теперь я использую python для вызова этого сервиса. Я использую библиотеку Zeep для клиента веб-службы. Я могу вызвать эту функцию, но сервер не получает мои данные 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 голосов
/ 13 июля 2019

Наконец, я могу успешно позвонить в службу с помощью моего коллеги.Я публикую решение, для которого есть проблема, подобная мне.

HashMap Java анализируется как объект Json, как показано ниже:

{"entry": [{"key": "POSITIONIDENTIFIER "," value ":" test "}, {" 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)

Вот и все.

...