package com.qianwen.core.http; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.ProxySelector; import java.net.URI; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import okhttp3.Authenticator; import okhttp3.CacheControl; import okhttp3.Call; import okhttp3.Cookie; import okhttp3.CookieJar; import okhttp3.EventListener; import okhttp3.FormBody; import okhttp3.Headers; import okhttp3.HttpUrl; import okhttp3.Interceptor; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.internal.Util; import okhttp3.internal.http.HttpMethod; import okhttp3.logging.HttpLoggingInterceptor; import com.qianwen.core.tool.jackson.JsonUtil; import com.qianwen.core.tool.ssl.DisableValidationTrustManager; import com.qianwen.core.tool.ssl.TrustAllHostNames; import com.qianwen.core.tool.utils.Exceptions; import com.qianwen.core.tool.utils.Holder; /* loaded from: blade-starter-http-9.3.0.0-SNAPSHOT.jar:org/springblade/core/http/HttpRequest.class */ public class HttpRequest { private static final String DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"; private static final MediaType APPLICATION_JSON = MediaType.parse("application/json;charset=UTF-8"); private static volatile OkHttpClient httpClient = new OkHttpClient(); @Nullable private static HttpLoggingInterceptor globalLoggingInterceptor = null; private final Request.Builder requestBuilder; private final HttpUrl.Builder uriBuilder; private final String httpMethod; private String userAgent; @Nullable private RequestBody requestBody; @Nullable private Boolean followRedirects; @Nullable private Boolean followSslRedirects; @Nullable private HttpLoggingInterceptor.Level level; @Nullable private CookieJar cookieJar; @Nullable private EventListener eventListener; private final List interceptors = new ArrayList(); @Nullable private Authenticator authenticator; @Nullable private Duration connectTimeout; @Nullable private Duration readTimeout; @Nullable private Duration writeTimeout; @Nullable private Proxy proxy; @Nullable private ProxySelector proxySelector; @Nullable private Authenticator proxyAuthenticator; @Nullable private RetryPolicy retryPolicy; @Nullable private Boolean disableSslValidation; @Nullable private HostnameVerifier hostnameVerifier; @Nullable private SSLSocketFactory sslSocketFactory; @Nullable private X509TrustManager trustManager; public static HttpRequest get(final String url) { return new HttpRequest(new Request.Builder(), url, Method.GET); } public static HttpRequest get(final URI uri) { return get(uri.toString()); } public static HttpRequest post(final String url) { return new HttpRequest(new Request.Builder(), url, Method.POST); } public static HttpRequest post(final URI uri) { return post(uri.toString()); } public static HttpRequest patch(final String url) { return new HttpRequest(new Request.Builder(), url, Method.PATCH); } public static HttpRequest patch(final URI uri) { return patch(uri.toString()); } public static HttpRequest put(final String url) { return new HttpRequest(new Request.Builder(), url, Method.PUT); } public static HttpRequest put(final URI uri) { return put(uri.toString()); } public static HttpRequest delete(final String url) { return new HttpRequest(new Request.Builder(), url, Method.DELETE); } public static HttpRequest delete(final URI uri) { return delete(uri.toString()); } public HttpRequest query(String query) { this.uriBuilder.query(query); return this; } public HttpRequest queryEncoded(String encodedQuery) { this.uriBuilder.encodedQuery(encodedQuery); return this; } public HttpRequest queryMap(@Nullable Map queryMap) { if (queryMap != null && !queryMap.isEmpty()) { queryMap.forEach(this::query); } return this; } public HttpRequest query(String name, @Nullable Object value) { this.uriBuilder.addQueryParameter(name, value == null ? null : String.valueOf(value)); return this; } public HttpRequest queryEncoded(String encodedName, @Nullable Object encodedValue) { this.uriBuilder.addEncodedQueryParameter(encodedName, encodedValue == null ? null : String.valueOf(encodedValue)); return this; } /* JADX INFO: Access modifiers changed from: package-private */ public HttpRequest form(FormBody formBody) { this.requestBody = formBody; return this; } /* JADX INFO: Access modifiers changed from: package-private */ public HttpRequest multipartForm(MultipartBody multipartBody) { this.requestBody = multipartBody; return this; } public FormBuilder formBuilder() { return new FormBuilder(this); } public MultipartFormBuilder multipartFormBuilder() { return new MultipartFormBuilder(this); } public HttpRequest body(RequestBody requestBody) { this.requestBody = requestBody; return this; } public HttpRequest bodyString(String body) { this.requestBody = RequestBody.create(APPLICATION_JSON, body); return this; } public HttpRequest bodyString(MediaType contentType, String body) { this.requestBody = RequestBody.create(contentType, body); return this; } public HttpRequest bodyJson(@Nonnull Object body) { return bodyString(JsonUtil.toJson(body)); } private HttpRequest(final Request.Builder requestBuilder, String url, String httpMethod) { HttpUrl httpUrl = HttpUrl.parse(url); if (httpUrl == null) { throw new IllegalArgumentException(String.format("Url 不能解析: %s: [%s]。", httpMethod.toLowerCase(), url)); } this.requestBuilder = requestBuilder; this.uriBuilder = httpUrl.newBuilder(); this.httpMethod = httpMethod; this.userAgent = DEFAULT_USER_AGENT; } private Call internalCall(final OkHttpClient client) { Request request; OkHttpClient.Builder builder = client.newBuilder(); if (this.connectTimeout != null) { builder.connectTimeout(this.connectTimeout.toMillis(), TimeUnit.MILLISECONDS); } if (this.readTimeout != null) { builder.readTimeout(this.readTimeout.toMillis(), TimeUnit.MILLISECONDS); } if (this.writeTimeout != null) { builder.writeTimeout(this.writeTimeout.toMillis(), TimeUnit.MILLISECONDS); } if (this.proxy != null) { builder.proxy(this.proxy); } if (this.proxySelector != null) { builder.proxySelector(this.proxySelector); } if (this.proxyAuthenticator != null) { builder.proxyAuthenticator(this.proxyAuthenticator); } if (this.hostnameVerifier != null) { builder.hostnameVerifier(this.hostnameVerifier); } if (this.sslSocketFactory != null && this.trustManager != null) { builder.sslSocketFactory(this.sslSocketFactory, this.trustManager); } if (Boolean.TRUE.equals(this.disableSslValidation)) { disableSslValidation(builder); } if (this.authenticator != null) { builder.authenticator(this.authenticator); } if (!this.interceptors.isEmpty()) { builder.interceptors().addAll(this.interceptors); } if (this.cookieJar != null) { builder.cookieJar(this.cookieJar); } if (this.eventListener != null) { builder.eventListener(this.eventListener); } if (this.followRedirects != null) { builder.followRedirects(this.followRedirects.booleanValue()); } if (this.followSslRedirects != null) { builder.followSslRedirects(this.followSslRedirects.booleanValue()); } if (this.retryPolicy != null) { builder.addInterceptor(new RetryInterceptor(this.retryPolicy)); } if (this.level != null && HttpLoggingInterceptor.Level.NONE != this.level) { builder.addInterceptor(getLoggingInterceptor(this.level)); } else if (globalLoggingInterceptor != null) { builder.addInterceptor(globalLoggingInterceptor); } this.requestBuilder.header("User-Agent", this.userAgent); this.requestBuilder.url(this.uriBuilder.build()); String method = this.httpMethod; if (HttpMethod.requiresRequestBody(method) && this.requestBody == null) { request = this.requestBuilder.method(method, Util.EMPTY_REQUEST).build(); } else { request = this.requestBuilder.method(method, this.requestBody).build(); } return builder.build().newCall(request); } public Exchange execute() { return new Exchange(internalCall(httpClient)); } public AsyncCall async() { return new AsyncCall(internalCall(httpClient)); } public HttpRequest baseAuth(String userName, String password) { this.authenticator = new BaseAuthenticator(userName, password); return this; } public HttpRequest addHeader(final Map headers) { this.requestBuilder.headers(Headers.of(headers)); return this; } public HttpRequest addHeader(final String... namesAndValues) { Headers headers = Headers.of(namesAndValues); this.requestBuilder.headers(headers); return this; } public HttpRequest addHeader(final String name, final String value) { this.requestBuilder.addHeader(name, value); return this; } public HttpRequest setHeader(final String name, final String value) { this.requestBuilder.header(name, value); return this; } public HttpRequest removeHeader(final String name) { this.requestBuilder.removeHeader(name); return this; } public HttpRequest addCookie(final Cookie cookie) { addHeader("Cookie", cookie.toString()); return this; } public HttpRequest cacheControl(final CacheControl cacheControl) { this.requestBuilder.cacheControl(cacheControl); return this; } public HttpRequest userAgent(final String userAgent) { this.userAgent = userAgent; return this; } public HttpRequest followRedirects(boolean followRedirects) { this.followRedirects = Boolean.valueOf(followRedirects); return this; } public HttpRequest followSslRedirects(boolean followSslRedirects) { this.followSslRedirects = Boolean.valueOf(followSslRedirects); return this; } private static HttpLoggingInterceptor getLoggingInterceptor(HttpLoggingInterceptor.Level level) { HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(Slf4jLogger.INSTANCE); loggingInterceptor.setLevel(level); return loggingInterceptor; } public HttpRequest log() { this.level = HttpLoggingInterceptor.Level.BODY; return this; } public HttpRequest log(LogLevel logLevel) { this.level = logLevel.getLevel(); return this; } public HttpRequest authenticator(Authenticator authenticator) { this.authenticator = authenticator; return this; } public HttpRequest interceptor(Interceptor interceptor) { this.interceptors.add(interceptor); return this; } public HttpRequest cookieManager(CookieJar cookieJar) { this.cookieJar = cookieJar; return this; } public HttpRequest eventListener(EventListener eventListener) { this.eventListener = eventListener; return this; } public HttpRequest connectTimeout(final Duration timeout) { this.connectTimeout = timeout; return this; } public HttpRequest readTimeout(Duration readTimeout) { this.readTimeout = readTimeout; return this; } public HttpRequest writeTimeout(Duration writeTimeout) { this.writeTimeout = writeTimeout; return this; } public HttpRequest proxy(final InetSocketAddress address) { this.proxy = new Proxy(Proxy.Type.HTTP, address); return this; } public HttpRequest proxySelector(final ProxySelector proxySelector) { this.proxySelector = proxySelector; return this; } public HttpRequest proxyAuthenticator(final Authenticator proxyAuthenticator) { this.proxyAuthenticator = proxyAuthenticator; return this; } public HttpRequest retry() { this.retryPolicy = RetryPolicy.INSTANCE; return this; } public HttpRequest retryOn(Predicate respPredicate) { this.retryPolicy = new RetryPolicy(respPredicate); return this; } public HttpRequest retry(int maxAttempts, long sleepMillis) { this.retryPolicy = new RetryPolicy(maxAttempts, sleepMillis); return this; } public HttpRequest retry(int maxAttempts, long sleepMillis, Predicate respPredicate) { this.retryPolicy = new RetryPolicy(maxAttempts, sleepMillis); return this; } public HttpRequest disableSslValidation() { this.disableSslValidation = Boolean.TRUE; return this; } public HttpRequest hostnameVerifier(HostnameVerifier hostnameVerifier) { this.hostnameVerifier = hostnameVerifier; return this; } public HttpRequest sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager) { this.sslSocketFactory = sslSocketFactory; this.trustManager = trustManager; return this; } public String toString() { return this.requestBuilder.toString(); } public static void setHttpClient(OkHttpClient httpClient2) { httpClient = httpClient2; } public static void setGlobalLog(LogLevel logLevel) { globalLoggingInterceptor = getLoggingInterceptor(logLevel.getLevel()); } /* JADX INFO: Access modifiers changed from: package-private */ public static String handleValue(@Nullable Object value) { if (value == null) { return ""; } if (value instanceof String) { return (String) value; } return String.valueOf(value); } private static void disableSslValidation(OkHttpClient.Builder builder) { try { X509TrustManager disabledTrustManager = DisableValidationTrustManager.INSTANCE; TrustManager[] trustManagers = {disabledTrustManager}; SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustManagers, Holder.SECURE_RANDOM); SSLSocketFactory disabledSslSocketFactory = sslContext.getSocketFactory(); builder.sslSocketFactory(disabledSslSocketFactory, disabledTrustManager); builder.hostnameVerifier(TrustAllHostNames.INSTANCE); } catch (KeyManagementException | NoSuchAlgorithmException e) { throw Exceptions.unchecked(e); } } }