URI in Java with Examples - Java 147

URI in Java with Examples – Java 147

URI 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 等方法,提供範例參考。

發佈留言