Table of Contents
ToggleURI in Java with Examples
形式統一 ( Uniform ) 對於各種不同的資源,都能有相同的表現,因此可以使用相同的語義進行解釋和理解,在不影響現存的資源的情況下,出現新的資源,而資源 ( Resource ) 任何事情都可以成為資源,可以被標示,及識別符( Indentifier ) 即是一個對資源的引用, URI in Java 介紹常見的 create 、 equals 、 toString 、 toASCIIString 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- net
| +- uri
| +- URIWithExamplesTest.java
單元測試
URI Java 提供建立、取得等操作 URI 。
create
建立一個 URI ,提供相關資訊。
@Test
public void create() {
String value = "https://username:password@www.ruoxue.org:443/java-learn/java-net?amount=101#top";
URI uri = URI.create(value);
System.out.println(uri);
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());
assertThat(uri.getScheme()).isEqualTo("https");
assertThat(uri.getAuthority()).isEqualTo("username:password@www.ruoxue.org:443");
assertThat(uri.getUserInfo()).isEqualTo("username:password");
assertThat(uri.getHost()).isEqualTo("www.ruoxue.org");
assertThat(uri.getPort()).isEqualTo(443);
assertThat(uri.getPath()).isEqualTo("/java-learn/java-net");
assertThat(uri.getQuery()).isEqualTo("amount=101");
assertThat(uri.getFragment()).isEqualTo("top");
}
https://username:password@www.ruoxue.org:443/java-learn/java-net?amount=101#top
Scheme: https
SchemeSpecificPart: //username:password@www.ruoxue.org:443/java-learn/java-net?amount=101
Authority: username:password@www.ruoxue.org:443
UserInfo: username:password
Host: www.ruoxue.org
Port: 443
Path: /java-learn/java-net
Query: amount=101
Fragment: top
createThrowException
URI Java 建立一個 URI ,傳入無法辨識的字串,會拋出例外。
@Test(expected = IllegalArgumentException.class)
public void createThrowException() {
String value = "https://www.ruoxue.org%%%";
URI uri = URI.create(value);
System.out.println(uri);
}
equalz
URI Java 建立兩個 URI ,比較是否相等。
@Test
public void equalz() {
URI uri = URI.create("https://www.ruoxue.org");
System.out.println(uri);
URI uri2 = URI.create("https://WWW.RUOXUE.ORG");
System.out.println(uri2);
boolean result = uri.equals(uri2);
System.out.println(result);
assertThat(result).isTrue();
uri = URI.create("https://www.ruoxue.org?s=a");
System.out.println(uri);
uri2 = URI.create("https://www.ruoxue.org?s=%61");
System.out.println(uri2);
result = uri.equals(uri2);
System.out.println(result);
assertThat(result).isFalse();
}
https://www.ruoxue.org
https://WWW.RUOXUE.ORG
true
https://www.ruoxue.org?s=a
https://www.ruoxue.org?s=%61
false
toStringz
Java OffsetTime 建立一個 OffsetTime ,取得時間。
@Test
public void toStringz() {
try {
URI uri = new URI("https", "www.ruoxue.org", "/java-learn", "name=name %", null);
System.out.println(uri.toString());
assertThat(uri.toString()).isEqualTo("https://www.ruoxue.org/java-learn?name=name%20%25");
uri = new URI("mailto", "ruo xue org@gmail.com", null);
System.out.println(uri.toString());
assertThat(uri.toString()).isEqualTo("mailto:ruo%20xue%20org@gmail.com");
} catch (URISyntaxException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
https://www.ruoxue.org/java-learn?name=name%20%25
mailto:ruo%20xue%20org@gmail.com
toASCIIString
Java URI 建立一個 URI ,轉成 ASCII 字串。
@Test
public void toASCIIString() {
try {
URI uri = new URI("https", "www.ruoxue.org", "/java-learn", "name=name %", null);
System.out.println(uri.toASCIIString());
assertThat(uri.toASCIIString()).isEqualTo("https://www.ruoxue.org/java-learn?name=name%20%25");
uri = new URI("mailto", "ruo xue org@gmail.com", null);
System.out.println(uri.toASCIIString());
assertThat(uri.toASCIIString()).isEqualTo("mailto:ruo%20xue%20org@gmail.com");
} catch (URISyntaxException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
https://www.ruoxue.org/java-learn?name=name%20%25
mailto:ruo%20xue%20org@gmail.com
URIWithExamplesTest.java
URI in Java 新增單元測試,驗證 Java URI Example 是否符合預期。
package org.ruoxue.java_147.net.uri;
import static org.assertj.core.api.Assertions.assertThat;
import java.net.URI;
import java.net.URISyntaxException;
import org.junit.Test;
public class URIWithExamplesTest {
@Test
public void create() {
String value = "https://username:password@www.ruoxue.org:443/java-learn/java-net?amount=101#top";
URI uri = URI.create(value);
System.out.println(uri);
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());
assertThat(uri.getScheme()).isEqualTo("https");
assertThat(uri.getAuthority()).isEqualTo("username:password@www.ruoxue.org:443");
assertThat(uri.getUserInfo()).isEqualTo("username:password");
assertThat(uri.getHost()).isEqualTo("www.ruoxue.org");
assertThat(uri.getPort()).isEqualTo(443);
assertThat(uri.getPath()).isEqualTo("/java-learn/java-net");
assertThat(uri.getQuery()).isEqualTo("amount=101");
assertThat(uri.getFragment()).isEqualTo("top");
}
@Test(expected = IllegalArgumentException.class)
public void createThrowException() {
String value = "https://www.ruoxue.org%%%";
URI uri = URI.create(value);
System.out.println(uri);
}
@Test
public void equalz() {
URI uri = URI.create("https://www.ruoxue.org");
System.out.println(uri);
URI uri2 = URI.create("https://WWW.RUOXUE.ORG");
System.out.println(uri2);
boolean result = uri.equals(uri2);
System.out.println(result);
assertThat(result).isTrue();
uri = URI.create("https://www.ruoxue.org?s=a");
System.out.println(uri);
uri2 = URI.create("https://www.ruoxue.org?s=%61");
System.out.println(uri2);
result = uri.equals(uri2);
System.out.println(result);
assertThat(result).isFalse();
}
@Test
public void toStringz() {
try {
URI uri = new URI("https", "www.ruoxue.org", "/java-learn", "name=name %", null);
System.out.println(uri.toString());
assertThat(uri.toString()).isEqualTo("https://www.ruoxue.org/java-learn?name=name%20%25");
uri = new URI("mailto", "ruo xue org@gmail.com", null);
System.out.println(uri.toString());
assertThat(uri.toString()).isEqualTo("mailto:ruo%20xue%20org@gmail.com");
} catch (URISyntaxException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
@Test
public void toASCIIString() {
try {
URI uri = new URI("https", "www.ruoxue.org", "/java-learn", "name=name %", null);
System.out.println(uri.toASCIIString());
assertThat(uri.toASCIIString()).isEqualTo("https://www.ruoxue.org/java-learn?name=name%20%25");
uri = new URI("mailto", "ruo xue org@gmail.com", null);
System.out.println(uri.toASCIIString());
assertThat(uri.toASCIIString()).isEqualTo("mailto:ruo%20xue%20org@gmail.com");
} catch (URISyntaxException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
}
心得分享
Java URI Example 統一資源識別碼 ( Uniform Resource Identifier ) 用於標識特定資源的字元序列,允許使用特定協定在網路上進行資源互動,熟悉 Java URI 這些方法的操作,像是: create 、 equals 、 toString 、 toASCIIString 等方法,提供範例參考。