如何在suds参数中设置请求属性?
这里有一个请求的例子:
<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>
1 个回答
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)