1

私の REST リソース (Jersey を使用) は、QueryParam を使用して IPv6 アドレスを受け取ります。

アドレス値がリソースで受信されると、その文字の一部がエンコードされ、どのアルゴリズムでかわからない。

たとえば、アドレス: [fe80::bce8:a33e:2c56:d48a%13]次の
ように到着:
デバッグでは [fe80::bce8:a33e:2c56:d48a\u00
] fe80::bce8:a33e:2c56:d48a]

'\u00' が空白に変換されることは理解していますが、これはなぜですか? どうすればこれを克服できますか?それをデコードする方法はありますか?

ありがとう

4

3 に答える 3

1

RFC2396によると:

  Because the percent "%" character always has the reserved purpose of
  being the escape indicator, it must be escaped as "%25" in order to
  be used as data within a URI.

これが予約文字であるかどうかをジャージーが理解することはできません。したがって、あなたの場合、クエリパラメータで予約文字をエスケープする必要があると思います。そうすれば、期待どおりに機能するはずです。

[fe80::bce8:a33e:2c56:d48a%2513]
于 2013-01-29T09:42:48.053 に答える
0

IPv6 アドレスは、8 つの 4 桁の 16 進数文字と 7 つの : 区切り文字で構成されます

したがって、16 進文字を個別に整数に変換する必要があります。

于 2013-01-28T08:12:40.173 に答える
0

リンクローカルアドレス(fe80:で始まるアドレス)を使用していることが原因のようです。すべてのリンクにはこれらのアドレスがあるため、アドレスには、どのリンクを意味するかを指定する必要があります。それが %13 の部分です。文字列が URL エンコード文字列として解析される場合、%13 は DC3 制御コード (16 進数 0x13 を持つ) になります。

QueryParam はわかりませんが、これはバグのようです。IP アドレスは URL エンコードされていないため、デコードしようとしないでください...

于 2013-01-28T11:03:18.380 に答える