相关疑难解决方法(0)

在Java中组合URL或URI的惯用方法是什么?

如何在Java中构建URL或URI?是否有惯用的方式,或者很容易做到这一点的库?

我需要允许从请求字符串开始,解析/更改各种URL部分(方案,主机,路径,查询字符串)并支持添加和自动编码查询参数.

java url

111
推荐指数
6
解决办法
7万
查看次数

使用新的Spring UriComponentsBuilder进行URL编码

我正在尝试使用spring的UriComponentsBuilder来生成一些用于oauth交互的URL.查询参数包括诸如回调URL和其中包含空格的参数值之类的实体.

试图使用UriComponentBuilder(因为现在不推荐使用UriUtils)

UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(oauthURL);
urlBuilder.queryParam("client_id", clientId);
urlBuilder.queryParam("redirect_uri", redirectURI);
urlBuilder.queryParam("scope", "test1 test2");

String url = urlBuilder.build(false).encode().toUriString();
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然scope参数中的空格已成功替换为'+',但redirect_uri参数根本不是url编码的.

例如,

redirect_uri=https://oauth2-login-demo.appspot.com/code
Run Code Online (Sandbox Code Playgroud)

应该结束了

redirect_uri=https%3A%2F%2Foauth2-login-demo.appspot.com%2Fcode
Run Code Online (Sandbox Code Playgroud)

但没有动过.潜入代码,特别是org.springframework.web.util.HierarchicalUriComponents.Type.QUERY_PARAM.isAllowed(c):

if ('=' == c || '+' == c || '&' == c) {
  return false;
}
else {
  return isPchar(c) || '/' == c || '?' == c;
}
Run Code Online (Sandbox Code Playgroud)

明确地允许':'和'/'字符,这不应该是口香糖.它必须做一些其他类型的编码,虽然对于我的生活,我无法想象什么.我在这里吠叫错了树吗?

谢谢

spring

24
推荐指数
2
解决办法
5万
查看次数

是否有用于处理构建URL的Java包?

我正在寻找的是Java中的一些代码,它将获取一个Map对象并将其转换为一个查询字符串,我可以附加到我返回的URL.我确定有一个库可以做到这一点以及更多,但我无法通过快速谷歌搜索找到它.有人知道会这样做吗?

java url

20
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×2

url ×2

spring ×1