构建URI
1、org.springframework.web.util.UriComponentsBuilder
org.springframework.web.util.UriComponentsBuilder 是 Spring 框架提供的一个工具类,用于构建和解析 URL 字符串。它提供了一种简单而强大的方式来构造复杂的 URL,尤其是在处理 HTTP 请求时非常有用。
使用 UriComponentsBuilder 构建 URL 的步骤
1.1、创建 UriComponentsBuilder 实例
可以通过静态方法 fromUriString 或 fromHttpUrl 创建 UriComponentsBuilder 实例。
1.2、设置 URL 组件
可以使用链式方法设置 URL 的各个部分,如路径、查询参数等。
1.3、构建最终的 URL
使用 build().toUriString() 方法生成最终的 URL 字符串。
示例代码
下面是一个具体的示例,展示如何使用 UriComponentsBuilder 构建一个带有查询参数的 URL:
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
public class UriComponentsBuilderExample {
public static void main(String[] args) {
// 创建 UriComponentsBuilder 实例
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://example.com/resource");
// 设置路径参数
builder.path("/path/{param1}/{param2}");
// 添加查询参数
builder.queryParam("key1", "value1");
builder.queryParam("key2", "value2");
// 设置片段
builder.fragment("section");
// 构建最终的 URL
String finalUrl = builder.build().toUriString();
System.out.println("Final URL: " + finalUrl);
}
}
结果
Final URL: http://example.com/path/{param1}/{param2}?key1=value1&key2=value2#section
1.4、详细说明
1、创建实例:
UriComponentsBuilder.fromHttpUrl(“http://example.com/resource”) 创建了一个 UriComponentsBuilder 实例,初始化了基本的 URL 部分。
2、设置路径参数:
builder.path(“/path/{param1}/{param2}”) 设置了路径,并允许使用占位符 {param1} 和 {param2}。
3、添加查询参数:
builder.queryParam(“key1”, “value1”) 和 builder.queryParam(“key2”, “value2”) 添加了查询参数。
4、设置片段:
builder.fragment(“section”) 设置了 URL 的片段部分。
5、构建最终的 URL:
builder.build().toUriString() 构建并返回最终的 URL 字符串。
6、其他常用方法
- fromUri(URI uri):从 URI 对象创建 UriComponentsBuilder 实例。
- scheme(String scheme):设置 URL 的协议部分。
- host(String host):设置 URL 的主机部分。
- port(int port):设置 URL 的端口部分。
- userInfo(String userInfo):设置 URL 的用户信息部分。
- pathSegment(String… segments):设置路径段。
- query(String query):设置整个查询字符串。
- replaceQueryParam(String key, Object value):替换查询参数。
这些方法可以帮助你更灵活地构建和修改 URL。希望这些示例和说明对你有帮助!
2、org.apache.http.client.utils.URIBuilder
org.apache.http.client.utils.URIBuilder 是 Apache HttpClient 库提供的一个工具类,用于构建和解析 URI(Uniform Resource Identifier)。它提供了一种简单而灵活的方式来构造复杂的 URL,尤其适用于 HTTP 请求。
使用 URIBuilder 构建 URI 的步骤
1.1、创建 URIBuilder 实例
可以通过构造函数或静态方法创建 URIBuilder 实例。
1.2、设置 URI 组件
可以使用链式方法设置 URI 的各个部分,如协议、主机、端口、路径、查询参数等。
1.3、构建最终的 URI
使用 build() 方法生成最终的 URI 对象。
示例代码
下面是一个具体的示例,展示如何使用 URIBuilder 构建一个带有查询参数的 URI:
package com.example.demo;
/**
* @author chenwx
* @date 2024/9/13
*/
import org.apache.http.client.utils.URIBuilder;
import java.net.URI;
public class URIBuilderExample {
public static void main(String[] args) {
try {
// 创建 URIBuilder 实例
URIBuilder builder = new URIBuilder("http://example.com/resource");
// 设置路径参数
builder.setPath("/path/zhangsan/1000");
// 添加查询参数
builder.setParameter("key1", "value1");
builder.setParameter("key2", "value2");
// 设置片段
builder.setFragment("section");
// 构建最终的 URI
URI finalUri = builder.build();
System.out.println("Final URI: " + finalUri.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果
Final URI: http://example.com/path/zhangsan/1000?key1=value1&key2=value2#section
1.4、详细说明
1、创建实例:
new URIBuilder(“http://example.com/resource”) 创建了一个 URIBuilder 实例,初始化了基本的 URI 部分。
2、设置路径参数:
builder.setPath(“/path/{param1}/{param2}”) 设置了路径,并允许使用占位符 {param1} 和 {param2}。
3、添加查询参数:
builder.setParameter(“key1”, “value1”) 和 builder.setParameter(“key2”, “value2”) 添加了查询参数。
4、设置片段:
builder.setFragment(“section”) 设置了 URI 的片段部分。
5、构建最终的 URI:
builder.build() 构建并返回最终的 URI 对象。
6、其他常用方法
- setScheme(String scheme):设置 URI 的协议部分。
- setHost(String host):设置 URI 的主机部分。
- setPort(int port):设置 URI 的端口部分。
- setUserInfo(String userInfo):设置 URI 的用户信息部分。
- setPath(String path):设置 URI 的路径部分。
- setQuery(String query):设置整个查询字符串。
- addParameter(String key, String value):添加查询参数。
- removeAllParameters(String key):移除所有指定键的查询参数。