[英]How to create a soap-enc:Array parameter with python zeep?
我必須從wsdl構造一個 SOUP 方法 Agw_typeGenearDespachoIn
<xsd:complexType name="Agw_typeGenerarDespachoIn">
<xsd:all>
<xsd:element name="guias" type="soap-enc:Array"/>
<xsd:element name="margen_izquierdo" type="xsd:float"/>
<xsd:element name="margen_superior" type="xsd:float"/>
<xsd:element name="tipo_impresion" type="xsd:string"/>
<xsd:element name="usuario" type="xsd:string"/>
<xsd:element name="clave" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
我構造了soap-enc:Array類型的參數guias
array_type = self.client.get_type('ns1:Array')
guias = array_type()
values = xsd.AnyObject(array_type, array_type(_attr_1={'guias': '98516000037'}))
Agw_typeGenerarDespachoIn = self.factory.Agw_typeGenerarDespachoIn(guias=values,
margen_izquierdo=float(0),
margen_superior=float(0),
tipo_impresion=unicode('LASER'),
usuario=unicode(self.usuario),
clave=unicode(self.clave))
我得到回報
'`list`' object has no attribute '`_xsd_name`'
如果我嘗試為 param guias 使用其他值,例如
guia = dict(item='98516000056')
我收到返回錯誤
TypeError: {http://schemas.xmlsoap.org/soap/encoding/}Array() got an unexpected keyword argument 'item'. Signature: `_value_1: ANY[], arrayType: xsd:string, offset: {http://schemas.xmlsoap.org/soap/encoding/}arrayCoordinate, id: xsd:ID, href: xsd:anyURI, _attr_1: {}`
所以我嘗試使用 sugered 值“_value_1”
guia = dict(_value_1=['98516000056'])
並得到錯誤
Any element received object of type 'unicode', expected lxml.etree._Element or __builtin__.dict or zeep.xsd.valueobjects.AnyObject
我嘗試了不同的方法來構建soup-enc:Array 參數,但我總是遇到錯誤。 你知道我該如何解決它。 我感謝你能給我的所有幫助
我在 Coordinadora 傳輸器的 Agw_typeGenearDespachoIn 方法中創建數組的錯誤是嘗試創建數組類型。 實際上,類型 Array 應該被視為普通的python數組。
guias = []
必須創建將添加到數組中的字符串元素。
guias_type = client.get_element('ns1:string')
最后,將元素字符串類型附加到數組。
for remesa in remesas:
guias.append(xsd.AnyObject(guias_type, remesa))
將所有參數放入方法中
Agw_typeGenerarDespachoIn = factory.Agw_typeGenerarDespachoIn(guias=guias, # array Codigos de guia a las que se les va a generar un despacho (array de strings)
margen_izquierdo=float(0), # float Margen izquierdo para la generacion del PDF, en caso que el tipo impresion seleccionado genere un PDF
margen_superior=float(0), # float Margen superior para la generacion del PDF, en caso que el tipo impresion seleccionado genere un PDF
tipo_impresion=unicode('LASER'), # string Tipo de impresion que se desea obtener las opciones son (LASER, LASER_RESUMIDA, POS_PDF, POS_PLANO).
usuario=unicode(self.usuario), # string Usuario asignado. Ej: prefijo.usuario
clave=unicode(self.clave) # string Clave codificada con el algoritmo sha256.
)
print Agw_typeGenerarDespachoIn
response = client.service.Guias_generarDespacho(Agw_typeGenerarDespachoIn)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.