我挖掘了源代码,但我找不到这种行为的原因。
根据Use URI builder in Android or create URL with variables,这应该绝对正常。
说我想连接到https://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json
然后,我有这个代码打印三种不同的方式来获取该地址。
String userHash = "eac16c9fc481cb6825f8b3a35f916b5c";
String correctUrl = "https://www.gravatar.com/" + userHash + ".json";
Uri.Builder builder1 = Uri.parse(correctUrl).buildUpon();
Uri.Builder builder2 = new Uri.Builder()
.scheme("https")
.path("www.gravatar.com")
.appendPath(userHash + ".json");
Log.i("Correct URL", correctUrl);
Log.i("Builder 1 URL", builder1.toString());
Log.i("Builder 2 URL", builder2.toString());
前两个打印正常,但第三个是我更喜欢使用的,但它不正确,因为你可以看到http:/www
而不是http://www
I/Correct URL: https://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json
I/Builder 1 URL: https://www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json
I/Builder 2 URL: https:/www.gravatar.com/eac16c9fc481cb6825f8b3a35f916b5c.json
我正在使用API 23进行编译,并且我没有费心去尝试不同的API版本,因为我很困惑为什么这不起作用。
答案 0 :(得分:7)
您需要将网址路径设置为Rename C:\Program Files (x86)\MSBuild\12.0 => C:\Program Files (x86)\MSBuild\12.0-old
Copy C:\Program Files (x86)\MSBuild\14.0 => C:\Program Files (x86)\MSBuild\12.0
,而不是authority()
,这将始终为您提供1个正斜杠。删除path
添加.path("www.gravatar.com")
,
Here更多信息是使用权限的原因。