1

我承认我们通过使用 url 编码的表单在单个变量中发送 XML 文档(换行符转换为空格,内容转义)来做一些愚蠢的事情,但这是为了适应只能发送表单数据的客户端。

当转义的 XML 内容中的一个字符串包含撇号时

'

请求正文的解析停止并且不返回变量的其余部分。当然,这会产生一个问题,因为我们检索的 XML 文档是不完整的。

当接收者使用 Apache Wink JAX-RS 库时,在表单参数中传递撇号的正确方法是什么?

像这样的一行:

        <decisionspace  title="Traffic Study" details="Discuss the Rivertowns Square projects impact on traffic" />

工作正常,但像这样的一行:

        <decisionspace  title="Traffic Study" details="Discuss the Rivertowns Square project&apos;s impact on traffic" />

在“Square project”之后被截断

被转义的字符是:

"&" becomes "&amp;"
"\"" (double quote) becomes "&quot;"
"'" (single quote) becomes "&apos;"
"<" becomes "&lt;"
">" becomes "&gt;"
bytes < 0x20 or > 0x7f" become "&#nnn;"
4

2 回答 2

1

在进行更多挖掘之后,表单参数似乎存储在 MultivaluedMap (formParameters) 中,并且 & 符号被解释为值分隔符(如在查询字符串中),因此仅调用 formParameters.get(getName())返回到该位置(显示 formParameter 值显示在 toString() 中用逗号分隔的多个值)。我怀疑当请求正文被解释为填充 formParameter 映射时,它会将值解析为查询字符串并在每个&符号处分隔内容。

我确定使用不同的转义机制,因此&符号是 %26 或其他东西,因此它将整行作为一个字符串,我将全部设置。

我想这一切都取决于解析器在任何给定上下文中的视角,对于表单参数,它正在考虑查询字符串格式(当然)。

于 2012-06-19T16:35:53.350 回答
0

表单参数使用 . 分隔&。您应该以与对 URL 而非 XML/HTML 相同的方式对内容进行转义。

于 2012-06-19T17:04:17.727 回答