问题描述
我正在使用 okhttp 客户端(版本 3.10.0)调用 Bing 服务.测试中使用的地址带有#号.
I am using okhttp client (version 3.10.0) to call Bing service. The Address used in the test has # sign.
1177 公园大道 5 号 #190橙园佛罗里达州 320734150美国
1177 PARK AVE STE 5 #190ORANGE PARKFL 320734150US
http 客户端在 # 符号处截断地址组件.通过代码构造的网址是
http client truncates the address component at # sign. URL constructed through the code is
代码片段如下所示
Request.Builder builder = bingOkHttpClient.newRequestBuilder(path, buildQueryParams());
builder.addHeader("Accept","application/xml");
bingOkHttpClient.newCall(builder.build()).execute();
如果我用单词suite替换#,那么构造的url是正确的
If i replace # with the word suite, then url contructed is correctly
有没有其他方法可以让 # 构造的 url 不被截断?
Is there any other way to make the url constructed with # without getting truncated?
推荐答案
某些符号(包括#")不是有效的 URL 符号.如果您的 URL 需要包含它们,则需要对其进行编码.因此,获取您的原始 URL 字符串并使用方法 URLEncoder.encode(...)
对其进行编码 这是 URLEncoder
Some symbols (including '#') are not valid URL symbols. If your URL needs to include them they need to be encoded. So take your original URL string and encode it with method URLEncoder.encode(...)
Here is Javadoc for URLEncoder
这篇关于okhttp 客户端在 # 符号处截断 http URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!