这是一个和平的要求:
<ContinuousMove xmlns="http://www.onvif.org/ver20/ptz/wsdl">
<ProfileToken>0</ProfileToken>
<Velocity>
<PanTilt x="-0.5" y="0" xmlns="http://www.onvif.org/ver10/schema"/>
</Velocity>
</ContinuousMove>
此请求的调用方式与self._client.service.ContinuousMove(0, params)
相同,其中params
与params = {'PanTilt': [{'x': -0.5}, {'y': 0.5}]}
类似。主要问题是我无法弄清楚如何为请求添加属性,而不是值。在对象上抛出错误,找不到类型,在元组上生成这个xml:
<ns0:ContinuousMove>
<ns0:ProfileToken>0</ns0:ProfileToken>
<ns0:Velocity>
<ns1:PanTilt>x</ns1:PanTilt>
<ns1:PanTilt>0.5</ns1:PanTilt>
<ns1:PanTilt>y</ns1:PanTilt>
<ns1:PanTilt>0</ns1:PanTilt>
</ns0:Velocity>
</ns0:ContinuousMove>
答案 0 :(得分:0)
您可以使用suds.client.Client.factory.create
创建参数。
这是我写过的一个例子:
query_param = client.factory.create("QueryCriteriaBaseOfMyTaskCriteria")
pagination_model = client.factory.create("PaginationModel")
pagination_model.PageSize = 5000
query_param.PagingInfo = pagination_model
task_criteria = client.factory.create("MyTaskCriteria")
task_criteria.LoginId = user
task_criteria.OriginatorLoginId = client.factory.create("ArrayOfInt")
task_criteria.OriginatorLoginId.int.append(int(APPLICANT))
task_criteria.ProcInstId = client.factory.create("ArrayOfInt")
if instId is not None:
task_criteria.ProcInstId.int.append(instId)
task_criteria.ProcessCode = client.factory.create("ArrayOfString")
task_criteria.ProcessCode.string.append(PROCESSCODE)
task_criteria.Folio = ""
task_criteria.TaskStartDate = client.factory.create("DatePeriodModel")
task_criteria.ProcessStartDate = client.factory.create("DatePeriodModel")
query_param.QueryCriteria = task_criteria
ret = client.service.GetTaskList(query_param,apiKey)