All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.matrix.web.http.HttpMx Maven / Gradle / Ivy

/*
 * 版权所有 2024 Matrix。
 * 保留所有权利。
 */
package net.matrix.web.http;

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Map;

import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;

import static net.matrix.data.convert.BinaryStringConverter.BASE64;
import static net.matrix.data.convert.BinaryStringConverter.UTF8;

/**
 * HTTP 协议工具。
 */
@ThreadSafe
public final class HttpMx {
    /**
     * 阻止实例化。
     */
    private HttpMx() {
    }

    /**
     * 构造查询字符串。
     *
     * @param params
     *     参数。
     * @return 查询字符串。
     */
    @Nonnull
    public static String buildQueryString(@Nonnull Map params) {
        StringBuilder sb = new StringBuilder();

        for (Map.Entry param : params.entrySet()) {
            String key = param.getKey();
            Object value = param.getValue();

            sb.append(key).append('=');
            if (value != null) {
                sb.append(URLEncoder.encode(value.toString(), StandardCharsets.UTF_8));
            }
            sb.append('&');
        }
        if (sb.length() > 0) {
            sb.setLength(sb.length() - 1);
        }

        return sb.toString();
    }

    /**
     * 构造 Basic 认证请求头。
     *
     * @param username
     *     用户名。
     * @param password
     *     密码。
     * @return 请求头。
     */
    @Nonnull
    public static String buildBasicAuthorizationHeader(@Nonnull String username, @Nonnull String password) {
        String plain = username + ':' + password;
        return "Basic " + BASE64.toString(UTF8.toBinary(plain));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy