javax.ws.rs.core.UriBuilder构建遇到问题

时间:2020-07-28 10:59:57

标签: java web-applications java-7 java-ee-7

我的rest api应该接受一个String相对uri,然后重定向到该位置。

因此,假设我通过redirect_uri = / login?foo = bar我应该重定向到{host} {redirect_uri}。

我正在尝试使用UriBuilder,但查询参数始终经过编码:

Cognito

结果始终以:

UriBuilder.fromUri("//{baseurl}")
                .path(redirectUri)
                .scheme("https")
                .buildFromEncoded(domainInfo.getHost())

和连续的重定向将不起作用

/login%3Ffoo=bar

有任何提示吗?

2 个答案:

答案 0 :(得分:0)

.path(redirectUri)表示您正在传递路径。该方法不要求查询。因此,/login?foo=bar被视为没有查询的路径。

将路径部分作为路径传递,并将查询部分作为查询传递:

UriBuilder.fromUri("//{baseurl}")
                .path("/login")
                .queryParam("foo", "bar")
                .scheme("https")
                .buildFromEncoded(domainInfo.getHost())

答案 1 :(得分:0)

受@VGR评论的启发,我解决了这个问题

 UriBuilder.fromUri("//{baseurl}")
                .uri(postLogin) // in place of path
                .scheme("https")
                .buildFromEncoded(domainInfo.getHost())