1

URL エンコードされたフォームを使用して単一の変数 (改行をスペースに変換し、コンテンツをエスケープ) で XML ドキュメントを送信するという愚かなことをしていることは認めますが、これはフォーム データしか送信できないクライアントに対応するためです。

エスケープされた XML コンテンツの文字列の 1 つにアポストロフィが含まれていた場合

'

リクエスト本文の解析が停止し、変数の残りは返されません。もちろん、取得する 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

フォーム パラメータは を使用して区切られます&。XML/HTML の場合ではなく、URL の場合と同じ方法でコンテンツをエスケープする必要があります。

于 2012-06-19T17:04:17.727 に答える