Sam*_*m M 8 delphi null soap web-services delphi-xe2
我使用具有数字元素的Web服务.Delphi wsdl导入器将其设置为Int64.
Web服务允许此元素为空.但是,因为它被定义为Int64,当我在Delphi中使用Web服务而不为其设置值时,它默认为0,因为它是Int64.但是我需要它是空白的并且Web服务不接受值0(0被定义为无效并且由Web服务返回错误).
如果类型是Int64,我如何传递空值?
空的年龄(例子)
<E06_14></E06_14>
Run Code Online (Sandbox Code Playgroud)
可能有特殊意义,例如"未知"年龄.
在这种情况下,真正的问题是如何使字段在Delphi端可用.
支持'nil'一直是个问题.几种内置类型的Delphi不可为空.所以我们选择在这些情况下使用一个类(不优雅,但它有效).因此,随着Delphi 2007的最新更新,我添加了几种TXSxxxx类型来帮助解决这个问题.基本上:TXSBoolean,TXSInteger,TXSLong等TXSString已经存在,但它没有注册.现在它是.导入WSDL时,必须启用"使用TXSString进行简单的nillable类型"选项,以使导入器切换到TXSxxxx类型.在命令行上,它是"-0z +"选项.
导入WSDL向导的DocWiki还显示了与可为空的元素相关的两个选项:
处理可存储和可选元素 - 选中此选项可使WSDL导入器生成有关可选和可空属性的相关信息.SOAP运行时使用此信息以允许某些属性为零.
将TXSString用于简单的nillable类型 - WSDL标准允许简单类型为零,在Delphi中为NULL,在C++中为NULL,而Delphi和C++不允许这样.选中此选项可使WSDL导入器通过使用包装类的实例来克服此限制.