6

次のような URI があります。

java.net.URI location = UriBuilder.fromPath("../#/Login").queryParam("token", token).build();

そして、私はそれを応答として送信しています:return Response.seeOther(location).build()

ただし、上記の URI では、#にエンコードされてい%23/ます。ハッシュをエンコードせずに URI を作成するにはどうすればよいですか#公式ドキュメントによると、エンコードされていない状態を維持するにはfragment()メソッドを使用する必要があります。

URI テンプレートは URI のほとんどのコンポーネントで許可されていますが、その値は特定のコンポーネントに制限されています。例えば

UriBuilder.fromPath("{arg1}").build("foo#bar"); 結果の URI が「foo%23bar」になるように「#」がエンコードされます。URI "foo#bar" を作成するには、代わりに UriBuilder.fromPath("{arg1}").fragment("{arg2}").build("foo", "bar") を使用します。

ドキュメントの例を見ると、私の場合に適用する方法がわかりません。

最終的な URI は次のようになります。

http://localhost:7070/RTH_Sample14/#Login?token=eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvcnRoLmNvbSIsInN1YiI6IlJUSCIsInJvbGUiOiJVU0VSIiwiZXhwIjoxNDU2Mzk4MTk1LCJlbWFpbCI6Imtpcml0aS5rOTk5QGdtYWlsLmNvbSJ9.H3d-8sy1N-VwP5VvFl1q3nhltA-htPI4ilKXuuLhprxMfIx2AmZZqfVRUPR_tTovDEbD8Gd1alIXQBA-qxPBcxR9VHLsGmTIWUAbxbyrtHMzlU51nzuhb7-jXQUVIcL3OLu9Gcssr2oRq9jTHWV2YO7eRfPmHHmxzdERtgtp348

4

2 に答える 2

8

フラグメントを使用して URI を構築するには

UriBuilder.fromPath("http://localhost:7070/RTH_Sample14/").fragment("Login").build()

これにより、URI 文字列が生成されます

http://localhost:7070/RTH_Sample14/#Login

ただし、クエリパラメーターも追加すると

UriBuilder.fromPath("http://localhost:7070/RTH_Sample14/").fragment("Login")
          .queryParam("token", "t").build()

次に、UriBuilder常にフラグメントの前にクエリ パラメータを挿入します。

http://localhost:7070/RTH_Sample14/?token=t#Login

これは単に URL 構文に準拠しています。

于 2016-02-25T12:59:01.683 に答える