【发布时间】:2021-08-23 22:51:43
【问题描述】:
我正在使用 okhttp 客户端(版本 3.10.0)来调用 Bing 服务。测试中使用的地址有#号。
1177 公园大道 5 #190 橘园 佛罗里达州 320734150 美国
http 客户端在# 符号处截断地址部分。通过代码构造的 URL 是
代码片段如下所示
Request.Builder builder = bingOkHttpClient.newRequestBuilder(path, buildQueryParams());
builder.addHeader("Accept","application/xml");
bingOkHttpClient.newCall(builder.build()).execute();
如果我将 # 替换为套件,则 url 构造正确
有没有其他方法可以使使用 # 构造的 url 不被截断?
【问题讨论】:
-
由于
#用于引用 HTML 页面上的元素并且没有浏览器将其发送到服务器而是在本地处理它,我相信您必须自己对整个路径进行 URL 编码。作为快速修复,您可以尝试将#替换为%23,这是它在URL 编码中的表示。但是,不知道这是否可行; okhttp 可能会自行对%进行编码,这会破坏 URL。
标签: java spring-boot okhttp