Android Uri统一资源标识符

URI来自与java.net包下。Uri来自于android.net包下。Android开发通常使用Uri。
其作用是将字符串的统一资源定位符,转化为Uri类型,使用其内部标准处理解析。

基本规则: [scheme:][//host:port][path][?query][#fragment]

String text = "https://www.buddies.cc:8081/user/100?name=zhao&age=20#tag=title";
Uri uri = Uri.parse(text);

// https
final String scheme = uri.getScheme();
// www.buddies.cc:8081
final String authority = uri.getAuthority();
// www.buddies.cc
final String host = uri.getHost();
// 8081
final int port = uri.getPort();
// /user/100
final String path = uri.getPath();
// name=zhao&age=20
final String query = uri.getQuery();
// tag=title
final String fragment = uri.getFragment();

Uri本身不可修改的,但是可以通过buildUpon()重新构建Builder,然后修改数据后通过build()方法重新构建出Uri对象。

final Uri build = uri.buildUpon().appendQueryParameter("aaa", "zhao wen liang").build();
final String encodedQuery1 = build.getEncodedQuery();
final String query1 = build.getQuery();
final String aaa = build.getQueryParameter("aaa");

默认获取参数是decode,默认添加参数内部会进行encode,对于uri参数都应该进行encode后再加入到uri中。(Uri在添加参数的时候可以默认进行encode处理)

posted @ 2022-02-18 14:55  岁在癸酉  阅读(207)  评论(0)    收藏  举报