小编Kev*_*han的帖子

创建要传递给 zeep 的 xml 格式

我是 zeep 的新手。我有以下效果很好:

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 )
Run Code Online (Sandbox Code Playgroud)

有了上面的内容,我可以将定义的 API 用于大多数调用。例如:

data = {'Username': 'xxxx123',  'Password': 'Secretpassword'}
loginreq = client.service.Login(data)

data = {'LoginID': 'xxxyyy', 'Token': 'gregrwevds543',  'CompanyID': 123}
company_details = client.service.GetCompanyDetails(data)
Run Code Online (Sandbox Code Playgroud)

这一切都很好。但是,对 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>
Run Code Online (Sandbox Code Playgroud)

那就是我需要更改 LicenseRequest …

python xml zeep

12
推荐指数
1
解决办法
4693
查看次数

标签 统计

python ×1

xml ×1

zeep ×1