; - 乌里生成器在Android中'/'由'%2F“和&QUOT更换:QUOT;被替换"%3A" [英] Uri Builder in android - '/' replaced by '%2F' and ":" is replaced by "%3A"

查看:322
本文介绍了; - 乌里生成器在Android中'/'由'%2F“和&QUOT更换:QUOT;被替换"%3A"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想建立以下URI -

I want to build the following URI -

https://10.112.88.182:8443/Vehicle/services/socialService/login

...

Builder builder = new Builder();
builder.scheme(Constants.URL_SCHEME);
builder.authority(host);
builder.appendPath(service + "/" +method);
return builder.build().toString();

其中

  • URL_SCHEME - HTTPS
  • 主机 - 10.112.88.182:8443/Vehicle/services /
  • 服务 - socialService
  • 方法 - 登录
  • URL_SCHEME - https
  • host - 10.112.88.182:8443/Vehicle/services/
  • service - socialService
  • method - login

在此code运行时我得到以下URI -

When this code runs I get the following URI -

https://10.112.88.182%3A8443%2FVehicle%2Fservices%2F/socialService%2Flogin

/ 替换%2F 被替换%3A

推荐答案

这就是 Uri.Builder 的作品。它连接codeS非安全地址的字符有特殊含义的%XX 十六进制值。

That's how Uri.Builder works. It encodes non-safe URL characters with special meaning to their %xx hex values.

要prevent编码URI部件都已经正确连接codeD,使用连接codeD 的建设者功能的版本:

To prevent encoding URI parts that are already properly encoded, use the encoded versions of builder functions:

builder.encodedAuthority(host);
builder.appendEncodedPath(service + "/" +method);

但是,因为所有的URL部分都已经准备就绪,不需要任何进一步的编码方式,它更容易,只需使用普通的的StringBuilder 来连接的部分。

这篇关于; - 乌里生成器在Android中'/'由'%2F“和&QUOT更换:QUOT;被替换"%3A"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆