为Zeep创建传递的XML格式

2024-06-01 09:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的。 我有以下非常有效的方法:

import zeep

from zeep.cache import SqliteCache

from zeep.transports import Transport
wsdl = 'https://emaapitest.eset.com/Services/v2015_1/MSPService.svc?singleWsdl'
transport = Transport(cache=SqliteCache())
client = zeep.Client(wsdl=wsdl, transport=transport )

有了以上这些,我可以在大多数调用中使用已定义的API。 例如:

^{pr2}$

一切都很好。 但是,对UpdateSite的API调用需要不同的格式,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:msp="http://schemas.datacontract.org/2004/07/MSPApi.Services.v2015_1.Requests">
       <soapenv:Header/>
       <soapenv:Body>
          <tem:UpdateSite>
         <tem:request>
            <msp:LoginID>123abc</msp:LoginID>
            <msp:Token>hpjzncpduqyfreyakcsdilqv</msp:Token>
                  <msp:LicenseRequests>
                       <LicenseRequest xmlns:d7="http://schemas.datacontract.org/2004/07/MSPApi.Services.v2015_1.Requests"
                    i:type="d7:LicenseCreateRequest" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MSPApi.Services.v2015_1.ViewModels">
                           <d7:ProductCode>112</d7:ProductCode>
                           <d7:Quantity>3</d7:Quantity>
                           <d7:Trial>false</d7:Trial>
                       </LicenseRequest>
                 </msp:LicenseRequests>
            <msp:SiteID>123456</msp:SiteID>
         </tem:request>
          </tem:UpdateSite>
       </soapenv:Body>
    </soapenv:Envelope>

这就是我需要更改LicenseRequest上的命名空间。 有什么方法可以生成这个xml(比如说使用etree),然后把它传递给zeep吗? 准确的语法会有很大的帮助。 提前谢谢你的帮助。在


Tags: orgimporthttpschemaswsdltransportzeepmsp