说我有一个URL
http://example.com/query?q=
Run Code Online (Sandbox Code Playgroud)
我有一个用户输入的查询,例如:
随机字500英镑银行$
我希望结果是一个正确编码的URL:
http://example.com/query?q=random%20word%20%A3500%20bank%20%24
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?我尝试URLEncoder并创建了URI/URL对象,但它们都没有完全正确.
如何在Java中构建URL或URI?是否有惯用的方式,或者很容易做到这一点的库?
我需要允许从请求字符串开始,解析/更改各种URL部分(方案,主机,路径,查询字符串)并支持添加和自动编码查询参数.
我正在使用StringBuilder构建一个String
StringBuilder builder = new StringBuilder();
builder.append("my parameters");
builder.append("other parameters");
Run Code Online (Sandbox Code Playgroud)
然后我建立一个网址
Url url = new Url(builder.toString());
Run Code Online (Sandbox Code Playgroud)
然后我尝试连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Run Code Online (Sandbox Code Playgroud)
但是从我得到的结果来看,网址似乎并不正确.这就像某些参数被错误传递.这就是为什么我认为问题出在StringBuilder的一部分.
问题在于我试图传递的双参数.
double longitude = 23.433114;
String lng = String.ValueOf(longitude);
Run Code Online (Sandbox Code Playgroud)
然后我把它放在网址中.但如果我把它作为字符串给出,结果是正确的.
String lng = "23.433114"
Run Code Online (Sandbox Code Playgroud)
UrlEncoding是否必要?我将尝试下面的建议.
我正在寻找的是Java中的一些代码,它将获取一个Map对象并将其转换为一个查询字符串,我可以附加到我返回的URL.我确定有一个库可以做到这一点以及更多,但我无法通过快速谷歌搜索找到它.有人知道会这样做吗?