我使用SoapUI Pro 4.5.1,我有一个问题。 我的请求包含空值
let myPicker = UIPickerView()
@IBOutlet var myText: UITextField!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
myText.inputView = myPicker
}
@IBAction func textPiker(_ sender: UITextField) {
sender.inputView = myPicker
}
我从服务中得到了正确的答复。然后我关闭当前请求并执行另一个请求。然后我再次打开第一个请求(xml-bookmark)。但第一个查询包含数据:
<aa1: parameter1></parameter1>
我必须传递一个空值,而不是零。 为什么要改变? 谢谢!
答案 0 :(得分:0)
这可能是由于您在WSDL中请求XML模式。如果您检查xsd
,您的元素可能定义为:
<xs:element name="parameter1" nillable="true" type="xs:string"/>
nillable
属性from documentation的目标是:
... 缺少一个元素没有任何特殊含义:它 可能表示该信息未知或不适用,或 由于某些其他原因,该元素可能不存在。 有时它是 希望代表未发货的物品,未知信息或 不明确的信息_exlicitlicit_与元素,而不是一个 缺席元素。
如果节点元素在nillable=true
声明中具有xsd
属性,则当此元素为空时,允许在XML中具有 xsi:nil
。 / p>
元素上的任何
xsi:nil
属性都遵守规则。元素是 仅在声明元素时才允许具有xsi:nil
属性 仅在元素本身时才允许nillable
和xsi:nil = 'true'
是空的。
SOAPUI正在为您推断这一点,并且它正在更改元素,因为它是一个空元素,可能在xsd
中声明为nillable
。如果要避免这种情况,可以更改WSDL以从此元素中删除nillable=true
属性,并在SOAPUI项目中重新加载WSDL。或者,如果您的WS实施得很好,请不要担心,因为在这两种情况下响应都可能是正确的。