我想构建以下URI -
https://10.112.88.182:8443/Vehicle/services/socialService/login
Run Code Online (Sandbox Code Playgroud)
...
Builder builder = new Builder();
builder.scheme(Constants.URL_SCHEME);
builder.authority(host);
builder.appendPath(service + "/" +method);
return builder.build().toString();
Run Code Online (Sandbox Code Playgroud)
哪里
URL_SCHEME - httpshost - 10.112.88.182:8443/Vehicle/services/service - socialServicemethod - login当这段代码运行时,我得到以下URI -
https://10.112.88.182%3A8443%2FVehicle%2Fservices%2F/socialService%2Flogin
Run Code Online (Sandbox Code Playgroud)
/由...替换%2F并:替换为%3A
laa*_*lto 36
这是Uri.Builder有效的.它对非安全URL字符进行编码,对其%xx十六进制值具有特殊含义.
要防止编码已正确编码的URI部分,请使用encoded构建器函数的版本:
builder.encodedAuthority(host);
builder.appendEncodedPath(service + "/" +method);
Run Code Online (Sandbox Code Playgroud)
但由于您的所有URL部分都已准备好并且不需要任何进一步的编码,因此使用常规StringBuilder连接部件更容易.
就像laalto说的那样,这就是Uri.Builder的工作方式,但是如果你想以常规网址形式获取uri,就像你的情况一样:https://10.112.88.182:8443/Vehicle/services/socialService/login
你可以这样做:
URL url = new URL(URLDecoder.decode(builder.build().toString(), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11109 次 |
| 最近记录: |