【问题标题】:How to create a soap-enc:Array parameter with python zeep?如何使用 python zeep 创建一个 soap-enc:Array 参数?
【发布时间】:2020-01-04 05:12:37
【问题描述】:

我必须从wsdl 构造一个 SOUP 方法 Agw_typeGenerarDespachoIn

<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 参数,但总是出错。你知道我该如何解决它。感谢您给予我的所有帮助

【问题讨论】:

    标签: python xml wsdl suds zeep


    【解决方案1】:

    我在 Coordinadora 传输器的 Agw_typeGenerarDespachoIn 方法中创建数组时的错误是尝试创建 Array 类型。实际上 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多