java - URIBuilder setParameter 添加 + 而不是 %20 作为空格

标签 java decoding uribuilder

我正在尝试使用 URIBuilder 构建 URL,但出于某种原因,我得到 + 而不是 %20 来表示空格。

这是我的代码:

            URI uri=null;
            try {
                uri = ub.setScheme("http")
                        .setHost("myalcoholist.com")
                        .setPath("/drink-management/view-drink-json")
                        .setParameter("flavor",(String)params[1])
                        .setParameter("brand",(String)params[2])
                        .setParameter("company",(String)params[3])
                        .build();
            } catch (URISyntaxException e) {
                Log.e("url", "could not parse url", e);
                return null;
            }

参数:

params[3] = {java.lang.String@831933398520}"contreau france."
params[2] = {java.lang.String@831933398384}"cointreau"
params[1] = {java.lang.String@831933398256}"orange"

结果网址:

"GET /drink-management/view-drink-json?flavor=orange&brand=cointreau&company=contreau+france. HTTP/1.1" 200 538 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)"

我需要更改什么才能正确编码参数?

谢谢

最佳答案

我知道这篇文章很旧,但由于这是谷歌给我的第一个结果并且没有答案,这是我解决问题的方法:

只需将 URLEncoder.encode(string, "UTF-8") 与要进行此更改的字符串(字符串是您自己的字符串)一起使用即可。这会将字符串中的所有字符以 UTF-8 编码为 URL 格式。

关于java - URIBuilder setParameter 添加 + 而不是 %20 作为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084724/

相关文章:

java - java中有没有内置的验证、加密和恢复密码的方法

java - Tomcat Websocket 发送消息后关闭连接(CLOSED_ABNORMALLY)

java单元测试输入异常

android - URI 生成器结果中有一个意外的冒号(Android 编程)

java - 从 URL 中提取参数

java - libgdx inputListener 不适用于 Actor

video - 如何使用 ffmpeg 加速创建视频马赛克

ruby - Microsoft Word 符号的编码问题 [UTF-8 到 ISO-5589-1]

javascript - 用javascript写一个简单的解码函数

android - 替换 Android 中 Uri.Builder 中的查询参数?