域名使用了 CDN,请求出现异常,没法检查源站服务器的情况下,这里通过指定 DNS 解析 IP 地址来判断源站状态。
修改 hosts 文件,会存在 DNS 缓存且修改调试不方便,下面在 Java 中实现该功能。
这里使用 www.baidu.com 进行说明,指定访问的服务器 ip 为 1.0.0.1 ,实际上百度不是这个结果
添加 okhttp3 依赖
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp3.version}</version>
</dependency>
自定义 DNS 解析
Dns customDns = new Dns() {
@Override
public List<InetAddress> lookup(String s) throws UnknownHostException {
if ("www.baidu.com".equals(s)) {
return Collections.singletonList(InetAddress.getByName("1.0.0.1"));
}
return Dns.SYSTEM.lookup(s);
}
};
创建 OkHttpClient
OkHttpClient client = new OkHttpClient.Builder()
.dns(customDns)
.build();
创建 Request
Request request = new Request.Builder()
.url("https://www.baidu.com")
.build();
发送请求,输出响应内容
Response response = client.newCall(request).execute();
System.out.println(response.body().string());