|
|
|
|
@ -5,6 +5,7 @@ import com.github.catvod.crawler.Spider; |
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
|
|
import okhttp3.Dns; |
|
|
|
|
@ -24,21 +25,12 @@ public class OkHttp { |
|
|
|
|
static volatile OkHttp INSTANCE = new OkHttp(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkHttp get() { |
|
|
|
|
private static OkHttp get() { |
|
|
|
|
return Loader.INSTANCE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Dns dns() { |
|
|
|
|
return Spider.safeDns(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkHttpClient client() { |
|
|
|
|
if (get().client != null) return get().client; |
|
|
|
|
return get().client = getBuilder().build(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkHttpClient noRedirect() { |
|
|
|
|
return client().newBuilder().followRedirects(false).followSslRedirects(false).build(); |
|
|
|
|
public static Response newCall(Request request) throws IOException { |
|
|
|
|
return client().newCall(request).execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Response newCall(String url) throws IOException { |
|
|
|
|
@ -54,27 +46,19 @@ public class OkHttp { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String string(String url, Map<String, String> header) { |
|
|
|
|
return string(client(), url, null, header); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String string(OkHttpClient client, String url, Map<String, String> header) { |
|
|
|
|
return string(client, url, null, header); |
|
|
|
|
return string(url, null, header); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String string(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) { |
|
|
|
|
return url.startsWith("http") ? new OkRequest(GET, url, params, header).execute(client).getBody() : ""; |
|
|
|
|
public static String string(String url, Map<String, String> params, Map<String, String> header) { |
|
|
|
|
return url.startsWith("http") ? new OkRequest(GET, url, params, header).execute(client()).getBody() : ""; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String post(String url, Map<String, String> params) { |
|
|
|
|
return post(client(), url, params, null).getBody(); |
|
|
|
|
return post(url, params, null).getBody(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkResult post(String url, Map<String, String> params, Map<String, String> header) { |
|
|
|
|
return post(client(), url, params, header); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkResult post(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) { |
|
|
|
|
return new OkRequest(POST, url, params, header).execute(client); |
|
|
|
|
return new OkRequest(POST, url, params, header).execute(client()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String post(String url, String json) { |
|
|
|
|
@ -82,15 +66,11 @@ public class OkHttp { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkResult post(String url, String json, Map<String, String> header) { |
|
|
|
|
return post(client(), url, json, header); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkResult post(OkHttpClient client, String url, String json, Map<String, String> header) { |
|
|
|
|
return new OkRequest(POST, url, json, header).execute(client); |
|
|
|
|
return new OkRequest(POST, url, json, header).execute(client()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String getLocation(String url, Map<String, String> header) throws IOException { |
|
|
|
|
return getLocation(noRedirect().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap()); |
|
|
|
|
return getLocation(client().newBuilder().followRedirects(false).followSslRedirects(false).build().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static String getLocation(Map<String, List<String>> headers) { |
|
|
|
|
@ -100,7 +80,28 @@ public class OkHttp { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static OkHttpClient.Builder getBuilder() { |
|
|
|
|
return new OkHttpClient.Builder().dns(dns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); |
|
|
|
|
private static OkHttpClient build() { |
|
|
|
|
if (get().client != null) return get().client; |
|
|
|
|
return get().client = getBuilder().build(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static OkHttpClient.Builder getBuilder() { |
|
|
|
|
return new OkHttpClient.Builder().dns(safeDns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static OkHttpClient client() { |
|
|
|
|
try { |
|
|
|
|
return Objects.requireNonNull(Spider.client()); |
|
|
|
|
} catch (Throwable e) { |
|
|
|
|
return build(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static Dns safeDns() { |
|
|
|
|
try { |
|
|
|
|
return Objects.requireNonNull(Spider.safeDns()); |
|
|
|
|
} catch (Throwable e) { |
|
|
|
|
return Dns.SYSTEM; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|