SOAPUI Property Transfer - [Error: Unexpected element: CDATA]
SOAPUI Property Transfer - [Error: Unexpected element: CDATA]
我有一个针对 API v4 的 SOAPUI 项目。要使用 API,我需要进行身份验证以获取令牌,然后在后续的 API 调用中使用该令牌。我正在使用 属性 传输来获取身份验证令牌并将其存储为自定义 属性(针对 TestSuite)。这一切都很好。
我现在正在针对 API 的 v1 进行工作,并且我正在尝试遵循相同的方法。但是,当我进行令牌转移时,出现错误:
[Error: Unexpected element: CDATA]
来自 v1 身份验证请求的响应是 near-identical,但以下内容除外:
- 返回的元素有首字母大写
- 其中一个命名空间不同(正如预期的那样,引用版本 1.0 而不是 4.0)
- Content-Length header 是 300 而不是 302(虽然看不出实际的长度差异)
并且里面没有CDATA元素。
响应示例:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<AuthenticateResponse xmlns="http://cse-healthcare.com/API/1.0">
<AuthenticateResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AuthenticationToken>a183577c-52d8-4fa0-a73a-611e6a143d79</AuthenticationToken>
<Response xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<Status>
<Code>EGE00</Code>
<Description i:nil="true"/>
<Status>OK</Status>
</Status>
</AuthenticateResult>
</AuthenticateResponse>
</s:Body>
</s:Envelope>
属性转账:
我正在使用 //*:AuthenticationToken/text()
,除了初始资本外,它与针对 v4 的工作相同。
这不是绝对的show-stopper;我没有那么多测试要做,因此将令牌复制到其他请求不会造成严重后果,但令人沮丧的是,看起来相同的东西不起作用。
有什么想法吗?
属性 传输步骤针对 XML 中节点的子节点。如果指定的节点不包含任何子节点,则将选择文本节点。如果有其他子级,则将选择生成的层次结构。在任何一种情况下,您都可以通过选择 "Transfer text content" 选项来限制仅传输文本。
附加文档是 here.
对于您的情况,从 XPath 中删除 /text()
节点应该可行。
我有一个针对 API v4 的 SOAPUI 项目。要使用 API,我需要进行身份验证以获取令牌,然后在后续的 API 调用中使用该令牌。我正在使用 属性 传输来获取身份验证令牌并将其存储为自定义 属性(针对 TestSuite)。这一切都很好。
我现在正在针对 API 的 v1 进行工作,并且我正在尝试遵循相同的方法。但是,当我进行令牌转移时,出现错误:
[Error: Unexpected element: CDATA]
来自 v1 身份验证请求的响应是 near-identical,但以下内容除外:
- 返回的元素有首字母大写
- 其中一个命名空间不同(正如预期的那样,引用版本 1.0 而不是 4.0)
- Content-Length header 是 300 而不是 302(虽然看不出实际的长度差异)
并且里面没有CDATA元素。
响应示例:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<AuthenticateResponse xmlns="http://cse-healthcare.com/API/1.0">
<AuthenticateResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AuthenticationToken>a183577c-52d8-4fa0-a73a-611e6a143d79</AuthenticationToken>
<Response xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<Status>
<Code>EGE00</Code>
<Description i:nil="true"/>
<Status>OK</Status>
</Status>
</AuthenticateResult>
</AuthenticateResponse>
</s:Body>
</s:Envelope>
属性转账:
我正在使用 //*:AuthenticationToken/text()
,除了初始资本外,它与针对 v4 的工作相同。
这不是绝对的show-stopper;我没有那么多测试要做,因此将令牌复制到其他请求不会造成严重后果,但令人沮丧的是,看起来相同的东西不起作用。
有什么想法吗?
属性 传输步骤针对 XML 中节点的子节点。如果指定的节点不包含任何子节点,则将选择文本节点。如果有其他子级,则将选择生成的层次结构。在任何一种情况下,您都可以通过选择 "Transfer text content" 选项来限制仅传输文本。 附加文档是 here.
对于您的情况,从 XPath 中删除 /text()
节点应该可行。