我正在使用泡沫0.4
我正在尝试创建这样的节点(来自示例SOAP请求):
<id xsi:type="xs:int">123456</id>
它是SOAP调用的一个参数,只是传递一个int就会产生这个:
<int>123456</int>
给了我
Expected: class java.lang.Integer, got class org.apache.xerces.dom.ElementNSImpl
所以我需要的是一种创建正确类型的方法。我已经尝试创建一个xsd:int的实例,但是我无法看到设置值。
有人有任何想法吗?
修改
代码:
findResult = self.client.service.find(self._getSession(), 'Candidate', 123456)
或
find = self.client.factory.create('find')
find.session = self._getSession()
find.entityName = 'Candidate'
find.id = 123456
findResult = self.client.service.find(find)
两次都是相同的结果。它似乎将id作为文本字段传递。我检查了类型,我肯定使用int类型。 在WSDL模式中,参数类型为:
<xs:complexType name="find">
<xs:sequence>
<xs:element name="session" type="xs:string" minOccurs="0"/>
<xs:element name="entityName" type="xs:string" minOccurs="0"/>
<xs:element name="id" type="xs:anyType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
我在这里输入任何类型的问题吗?
答案 0 :(得分:0)
我有“类似”的问题,我需要一个值来获得xsi:type =“xsd:int”(Suds write request missing datatype?),并且由于某种原因,这不会被添加到xml中
我最终偶然发现了这个Adding xsi:type and envelope namespace when using SUDS并根据我的用法调整了解决方案,基本上是一个Suds插件“重写”我的Value元素以包含xsi:type =“xsd:int”属性。
可能您可以使用类似的方法在传出的SOAP上设置类型。
也可能是您知道的,输出SOAP:
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)