⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uri.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  public URI(String p_scheme, String p_host, String p_path,             String p_queryString, String p_fragment)         throws MalformedURIException {    this(p_scheme, null, p_host, -1, p_path, p_queryString, p_fragment);  } /**  * Construct a new URI that follows the generic URI syntax from its  * component parts. Each component is validated for syntax and some  * basic semantic checks are performed as well.  See the individual  * setter methods for specifics.  *  * @param p_scheme the URI scheme (cannot be null or empty)  * @param p_userinfo the URI userinfo (cannot be specified if host  *                   is null)  * @param p_host the hostname, IPv4 address or IPv6 reference for the URI  * @param p_port the URI port (may be -1 for "unspecified"; cannot  *               be specified if host is null)  * @param p_path the URI path - if the path contains '?' or '#',  *               then the query string and/or fragment will be  *               set from the path; however, if the query and  *               fragment are specified both in the path and as  *               separate parameters, an exception is thrown  * @param p_queryString the URI query string (cannot be specified  *                      if path is null)  * @param p_fragment the URI fragment (cannot be specified if path  *                   is null)  *  * @exception MalformedURIException if any of the parameters violates  *                                  syntax rules or semantic rules  */  public URI(String p_scheme, String p_userinfo,             String p_host, int p_port, String p_path,             String p_queryString, String p_fragment)         throws MalformedURIException {    if (p_scheme == null || p_scheme.trim().length() == 0) {      throw new MalformedURIException("Scheme is required!");    }    if (p_host == null) {      if (p_userinfo != null) {        throw new MalformedURIException(             "Userinfo may not be specified if host is not specified!");      }      if (p_port != -1) {        throw new MalformedURIException(             "Port may not be specified if host is not specified!");      }    }    if (p_path != null) {      if (p_path.indexOf('?') != -1 && p_queryString != null) {        throw new MalformedURIException(          "Query string cannot be specified in path and query string!");      }      if (p_path.indexOf('#') != -1 && p_fragment != null) {        throw new MalformedURIException(          "Fragment cannot be specified in both the path and fragment!");      }    }    setScheme(p_scheme);    setHost(p_host);    setPort(p_port);    setUserinfo(p_userinfo);    setPath(p_path);    setQueryString(p_queryString);    setFragment(p_fragment);  } /**  * Initialize all fields of this URI from another URI.  *  * @param p_other the URI to copy (cannot be null)  */  private void initialize(URI p_other) {    m_scheme = p_other.getScheme();    m_userinfo = p_other.getUserinfo();    m_host = p_other.getHost();    m_port = p_other.getPort();    m_regAuthority = p_other.getRegBasedAuthority();    m_path = p_other.getPath();    m_queryString = p_other.getQueryString();    m_fragment = p_other.getFragment();  } /**  * Initializes this URI from a base URI and a URI specification string.  * See RFC 2396 Section 4 and Appendix B for specifications on parsing  * the URI and Section 5 for specifications on resolving relative URIs  * and relative paths.  *  * @param p_base the base URI (may be null if p_uriSpec is an absolute  *               URI)  * @param p_uriSpec the URI spec string which may be an absolute or  *                  relative URI (can only be null/empty if p_base  *                  is not null)   * @param allowNonAbsoluteURI true to permit non-absolute URIs,    *                         in case of relative URI, false otherwise.   *   * @exception MalformedURIException if p_base is null and p_uriSpec   *                                  is not an absolute URI or if   *                                  p_uriSpec violates syntax rules   */  private void initialize(URI p_base, String p_uriSpec, boolean allowNonAbsoluteURI)      throws MalformedURIException {            String uriSpec = p_uriSpec;      int uriSpecLen = (uriSpec != null) ? uriSpec.length() : 0;            if (p_base == null && uriSpecLen == 0) {          if (allowNonAbsoluteURI) {              m_path = "";              return;          }          throw new MalformedURIException("Cannot initialize URI with empty parameters.");      }            // just make a copy of the base if spec is empty      if (uriSpecLen == 0) {          initialize(p_base);          return;      }            int index = 0;            // Check for scheme, which must be before '/', '?' or '#'.      int colonIdx = uriSpec.indexOf(':');      if (colonIdx != -1) {          final int searchFrom = colonIdx - 1;          // search backwards starting from character before ':'.          int slashIdx = uriSpec.lastIndexOf('/', searchFrom);          int queryIdx = uriSpec.lastIndexOf('?', searchFrom);          int fragmentIdx = uriSpec.lastIndexOf('#', searchFrom);                    if (colonIdx == 0 || slashIdx != -1 ||               queryIdx != -1 || fragmentIdx != -1) {              // A standalone base is a valid URI according to spec              if (colonIdx == 0 || (p_base == null && fragmentIdx != 0 && !allowNonAbsoluteURI)) {                  throw new MalformedURIException("No scheme found in URI.");              }          }          else {              initializeScheme(uriSpec);              index = m_scheme.length()+1;                            // Neither 'scheme:' or 'scheme:#fragment' are valid URIs.              if (colonIdx == uriSpecLen - 1 || uriSpec.charAt(colonIdx+1) == '#') {                  throw new MalformedURIException("Scheme specific part cannot be empty.");                 }          }      }      else if (p_base == null && uriSpec.indexOf('#') != 0 && !allowNonAbsoluteURI) {          throw new MalformedURIException("No scheme found in URI.");          }            // Two slashes means we may have authority, but definitely means we're either      // matching net_path or abs_path. These two productions are ambiguous in that      // every net_path (except those containing an IPv6Reference) is an abs_path.       // RFC 2396 resolves this ambiguity by applying a greedy left most matching rule.       // Try matching net_path first, and if that fails we don't have authority so       // then attempt to match abs_path.      //      // net_path = "//" authority [ abs_path ]      // abs_path = "/"  path_segments      if (((index+1) < uriSpecLen) &&          (uriSpec.charAt(index) == '/' && uriSpec.charAt(index+1) == '/')) {          index += 2;          int startPos = index;                    // Authority will be everything up to path, query or fragment          char testChar = '\0';          while (index < uriSpecLen) {              testChar = uriSpec.charAt(index);              if (testChar == '/' || testChar == '?' || testChar == '#') {                  break;              }              index++;          }                    // Attempt to parse authority. If the section is an empty string          // this is a valid server based authority, so set the host to this          // value.          if (index > startPos) {              // If we didn't find authority we need to back up. Attempt to              // match against abs_path next.              if (!initializeAuthority(uriSpec.substring(startPos, index))) {                  index = startPos - 2;              }          }          else {              m_host = "";          }      }            initializePath(uriSpec, index);            // Resolve relative URI to base URI - see RFC 2396 Section 5.2      // In some cases, it might make more sense to throw an exception      // (when scheme is specified is the string spec and the base URI      // is also specified, for example), but we're just following the      // RFC specifications      if (p_base != null) {          absolutize(p_base);      }  } /**  * Initializes this URI from a base URI and a URI specification string.  * See RFC 2396 Section 4 and Appendix B for specifications on parsing  * the URI and Section 5 for specifications on resolving relative URIs  * and relative paths.  *  * @param p_base the base URI (may be null if p_uriSpec is an absolute  *               URI)  * @param p_uriSpec the URI spec string which may be an absolute or  *                  relative URI (can only be null/empty if p_base  *                  is not null)  *  * @exception MalformedURIException if p_base is null and p_uriSpec  *                                  is not an absolute URI or if  *                                  p_uriSpec violates syntax rules  */  private void initialize(URI p_base, String p_uriSpec)                         throws MalformedURIException {          String uriSpec = p_uriSpec;    int uriSpecLen = (uriSpec != null) ? uriSpec.length() : 0;        if (p_base == null && uriSpecLen == 0) {      throw new MalformedURIException(                  "Cannot initialize URI with empty parameters.");    }    // just make a copy of the base if spec is empty    if (uriSpecLen == 0) {      initialize(p_base);      return;    }    int index = 0;    // Check for scheme, which must be before '/', '?' or '#'.    int colonIdx = uriSpec.indexOf(':');    if (colonIdx != -1) {        final int searchFrom = colonIdx - 1;        // search backwards starting from character before ':'.        int slashIdx = uriSpec.lastIndexOf('/', searchFrom);        int queryIdx = uriSpec.lastIndexOf('?', searchFrom);        int fragmentIdx = uriSpec.lastIndexOf('#', searchFrom);               if (colonIdx == 0 || slashIdx != -1 ||             queryIdx != -1 || fragmentIdx != -1) {            // A standalone base is a valid URI according to spec            if (colonIdx == 0 || (p_base == null && fragmentIdx != 0)) {                throw new MalformedURIException("No scheme found in URI.");            }        }        else {            initializeScheme(uriSpec);            index = m_scheme.length()+1;                        // Neither 'scheme:' or 'scheme:#fragment' are valid URIs.            if (colonIdx == uriSpecLen - 1 || uriSpec.charAt(colonIdx+1) == '#') {                throw new MalformedURIException("Scheme specific part cannot be empty.");                }        }    }    else if (p_base == null && uriSpec.indexOf('#') != 0) {        throw new MalformedURIException("No scheme found in URI.");        }    // Two slashes means we may have authority, but definitely means we're either    // matching net_path or abs_path. These two productions are ambiguous in that    // every net_path (except those containing an IPv6Reference) is an abs_path.     // RFC 2396 resolves this ambiguity by applying a greedy left most matching rule.     // Try matching net_path first, and if that fails we don't have authority so     // then attempt to match abs_path.    //    // net_path = "//" authority [ abs_path ]    // abs_path = "/"  path_segments    if (((index+1) < uriSpecLen) &&        (uriSpec.charAt(index) == '/' && uriSpec.charAt(index+1) == '/')) {      index += 2;      int startPos = index;      // Authority will be everything up to path, query or fragment      char testChar = '\0';      while (index < uriSpecLen) {        testChar = uriSpec.charAt(index);        if (testChar == '/' || testChar == '?' || testChar == '#') {          break;        }        index++;      }      // Attempt to parse authority. If the section is an empty string      // this is a valid server based authority, so set the host to this      // value.      if (index > startPos) {        // If we didn't find authority we need to back up. Attempt to        // match against abs_path next.        if (!initializeAuthority(uriSpec.substring(startPos, index))) {          index = startPos - 2;        }      }      else {        m_host = "";      }    }    initializePath(uriSpec, index);    // Resolve relative URI to base URI - see RFC 2396 Section 5.2    // In some cases, it might make more sense to throw an exception    // (when scheme is specified is the string spec and the base URI    // is also specified, for example), but we're just following the    // RFC specifications    if (p_base != null) {        absolutize(p_base);    }  }  /**   * Absolutize URI with given base URI.   *   * @param p_base base URI for absolutization   */  public void absolutize(URI p_base) {      // check to see if this is the current doc - RFC 2396 5.2 #2      // note that this is slightly different from the RFC spec in that      // we don't include the check for query string being null      // - this handles cases where the urispec is just a query      // string or a fragment (e.g. "?y" or "#s") -      // see <http://www.ics.uci.edu/~fielding/url/test1.html> which      // identified this as a bug in the RFC      if (m_path.length() == 0 && m_scheme == null &&          m_host == null && m_regAuthority == null) {        m_scheme = p_base.getScheme();        m_userinfo = p_base.getUserinfo();        m_host = p_base.getHost();        m_port = p_base.getPort();        m_regAuthority = p_base.getRegBasedAuthority();        m_path = p_base.getPath();        if (m_queryString == null) {          m_queryString = p_base.getQueryString();                            if (m_fragment == null) {                  m_fragment = p_base.getFragment();              }        }        return;      }      // check for scheme - RFC 2396 5.2 #3      // if we found a scheme, it means absolute URI, so we're done      if (m_scheme == null) {        m_scheme = p_base.getScheme();      }      else {        return;      }      // check for authority - RFC 2396 5.2 #4      // if we found a host, then we've got a network path, so we're done      if (m_host == null && m_regAuthority == null) {        m_userinfo = p_base.getUserinfo();        m_host = p_base.getHost();        m_port = p_base.getPort();        m_regAuthority = p_base.getRegBasedAuthority();      }      else {        return;      }      // check for absolute path - RFC 2396 5.2 #5      if (m_path.length() > 0 &&          m_path.startsWith("/")) {        return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -