0
点赞
收藏
分享

微信扫一扫

Java--URI--使用/实例



简介

说明

        本文介绍Java里网络相关的类:java.net.URI。

URL介绍

        URI(Uniform Resource Identify),统一资源标识符,是一个用于标识某一互联网资源名称的字符串。

URI的结构

基本形式

[scheme:]scheme-specific-part[#fragment]

分为三部分:scheme、scheme-specific-part、fragment

进一步划分

[scheme:][//authority][path][?query][#fragment]

有下面几个规则:

  1. path可以有多个,每个用/连接,比如
  1. scheme://authority/path1/path2/path3?query#fragment
  1. query参数可以带有对应的值,也可以不带,如果带对应的值用=表示,如:
  1. scheme://authority/path1/path2/path3?id = 1#fragment,这里有一个参数id,它的值是1
  1. query参数可以有多个,每个用&连接
  1. scheme://authority/path1/path2/path3?id = 1&name = mingming&old#fragment
  1. 这里有三个参数:
  1. 参数1:id,其值是:1
  2. 参数2:name,其值是:mingming
  3. 参数3:old,没有对它赋值,所以它的值是null
  1. 在android中,除了scheme、authority是必须要有的,其它的几个path、query、fragment,它们每一个可以选择性的要或不要,但顺序不能变,比如:
  1. 其中"path"可不要:scheme://authority?query#fragment
  2. 其中"path"和"query"可都不要:scheme://authority#fragment
  3. 其中"query"和"fragment"可都不要:scheme://authority/path
  4. "path","query","fragment"都不要:scheme://authority
  5. 等等……

终极划分

authority可以分为host:port的形式,即再次划分后是这样的:

[scheme:][//host[:port]][path][?query][#fragment]

其实还有如下这种形式,但不常见:

[scheme:][//[user-info@]host[:port]][path][?query][#fragment]

构建方法


方法



作用



public URI(String str) throws URISyntaxException



通过给定的url字符串创建URI




public URI(String scheme,

   String userInfo, String host, int port,

   String path, String query, String fragment) throws URISyntaxException



通过指定参数创建URI。



public URI(String scheme,

   String authority,

   String path, String query, String fragment) throws URISyntaxException



通过指定参数创建URI。



public URI(String scheme, String host, String path, String fragment) throws URISyntaxException



通过指定参数创建URI。



public URI(String scheme, String ssp, String fragment) throws URISyntaxException



通过指定参数创建URI。



public static URI create(String str)



静态创建URI。(推荐)


解析方法


方法



作用



public String getScheme()



返回URI的协议



public String getUserInfo()



返回URI的用户信息



public String getAuthority()



返回URI的授权(域名+端口号)



public String getHost()



返回URI的主机。



public int getPort()



返回URI端口部分。



public String getPath()



返回URI路径部分。



public String getQuery()



返回URI查询参数部分。



public String getFragment()



获取此 URI 的锚点(也称为"片段")。



public URL toURL()



转为java.net.URL


实例1:通过完整url创建

package com.example.a;

import java.net.URI;

public class Demo {
public static void main(String[] args) {
String uriStr = ;
URI uri = URI.create(uriStr);
System.out.println("toString: " + uri.toString());
System.out.println("toASCIIString: " + uri.toASCIIString());
System.out.println("#####################################################");
System.out.println("Scheme: " + uri.getScheme());
System.out.println("SchemeSpecificPart: " + uri.getSchemeSpecificPart());
System.out.println("Authority: " + uri.getAuthority());
System.out.println("UserInfo: " + uri.getUserInfo());
System.out.println("Host: " + uri.getHost());
System.out.println("Port: " + uri.getPort());
System.out.println("Path: " + uri.getPath());
System.out.println("Query: " + uri.getQuery());
System.out.println("Fragment: " + uri.getFragment());
System.out.println("#####################################################");
System.out.println("RawSchemeSpecificPart: " + uri.getRawSchemeSpecificPart());
System.out.println("RawAuthority: " + uri.getRawAuthority());
System.out.println("RawUserInfo: " + uri.getRawUserInfo());
System.out.println("RawPath: " + uri.getRawPath());
System.out.println("RawQuery: " + uri.getRawQuery());
System.out.println("RawFragment: " + uri.getRawFragment());
}
}

运行结果

toString: https://knife.blog.csdn.net/article/details/124509399?name=Tony&age=25#abc
toASCIIString: https://knife.blog.csdn.net/article/details/124509399?name=Tony&age=25#abc
#####################################################
Scheme: https
SchemeSpecificPart: /?name=Tony&age=25
Authority: knife.blog.csdn.net
UserInfo: null
Host: knife.blog.csdn.net
Port: -1
Path: /article/details/124509399
Query: name=Tony&age=25
Fragment: abc
#####################################################
RawSchemeSpecificPart: /?name=Tony&age=25
RawAuthority: knife.blog.csdn.net
RawUserInfo: null
RawPath: /article/details/124509399
RawQuery: name=Tony&age=25
RawFragment: abc


举报

相关推荐

0 条评论