我有一个通过Delphi中的“导入WSDL”选项生成的类:
historyEntry = class(TRemotable)
private
Fid: Integer;
Fid_Specified: boolean;
Ftemperature1: Double;
Ftemperature1_Specified: boolean;
Ftemperature2: Double;
Ftemperature2_Specified: boolean;
/// etc...
但是,当没有温度2时,简单服务器不会发送Tempatura2标签。但是historyEntry对象针对该temperature2属性返回0,并且由于温度可以为零,因此我无法将其与零进行比较以检查其是否有效。
反正有没有检查响应中是否确实有temperature2标签?
答案 0 :(得分:1)
根据上下文,您在此处有一些选择。 假设Ftemperature1 ..等是简单的可为空的类型, 您可以:
处理可修剪元素和可选元素
选中此选项可使WSDL导入器生成有关可选属性和可设置属性的相关信息。 SOAP运行时使用此信息来允许某些属性为零。
将TXSString用于简单的可操作类型
WSDL标准允许简单类型在C ++中以Delphi或NULL为零,而Delphi和C ++则不允许。选中此选项,以使WSDL导入程序通过使用包装类的实例来克服此限制。
这样,将简单类型交换为复杂类型(例如TXSString),如果没有标签则为零。 如果您可以修改WSDL本身,则可以
这将产生相同的结果