阿里云二级域名申请-DNS解析
1.依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-alidns</artifactId>
<version>2.0.10</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.3.2</version>
</dependency>
</dependencies>
2.封装工具类
DNSUtils
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.alidns.model.v20150109.*;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import java.util.List;
import java.util.stream.Collectors;
public class DNSUtils {
private static IAcsClient client = null;
static {
String regionId = "cn-hangzhou"; //必填固定值,必须为“cn-hanghou”
String accessKeyId = ""; // your accessKey
String accessKeySecret = "";// your accessSecret
IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
// 若报Can not find endpoint to access异常,请添加以下此行代码
// DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Alidns", "alidns.aliyuncs.com");
client = new DefaultAcsClient(profile);
}
/**
* 获取域名列表
*
* @return list
*/
public static List<String> queryDomainList() {
DescribeDomainsRequest request = new DescribeDomainsRequest();
DescribeDomainsResponse response;
// describeRegionsRequest.setProtocol(ProtocolType.HTTPS); //指定访问协议
// describeRegionsRequest.setAcceptFormat(FormatType.JSON); //指定api返回格式
// describeRegionsRequest.setMethod(MethodType.POST); //指定请求方法
// describeRegionsRequest.setRegionId("cn-hangzhou");//指定要访问的Region,仅对当前请求生效,不改变client的默认设置。
try {
response = client.getAcsResponse(request);
List<DescribeDomainsResponse.Domain> list = response.getDomains();
return list.stream().map(DescribeDomainsResponse.Domain::getDomainName).collect(Collectors.toList());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取解析记录名称列表
*
* @return 解析记录名称列表响应对象
*/
public static DescribeDomainRecordsResponse describeDomainRecords() {
DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest();
request.setDomainName("feishifu.xyz");
try {
DescribeDomainRecordsResponse response = client.getAcsResponse(request);
return response;
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
/**
* 添加解析记录
*
* @param RR 主机记录
* @param type 记录类型
* @param value 记录值
* @return 主机记录id
*/
public static String addDomainRecord(String RR, String type, String value) {
AddDomainRecordRequest request = new AddDomainRecordRequest();
request.setDomainName("feishifu.xyz");
request.setRR(RR);
request.setType(type);
request.setValue(value);
try {
AddDomainRecordResponse response = client.getAcsResponse(request);
String recordId = response.getRecordId();
return recordId;
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
/**
* 删除解析记录
*
* @param recordId 主机记录id
* @return 主机记录id
*/
public static String deleteDomainRecord(String recordId) {
DeleteDomainRecordRequest request = new DeleteDomainRecordRequest();
request.setRecordId(recordId);
try {
DeleteDomainRecordResponse response = client.getAcsResponse(request);
String recordId1 = response.getRecordId();
return recordId1;
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
/**
* 更新解析记录
*
* @param RR 主机记录
* @param type 记录类型
* @param value 记录值
* @param recordId 主机记录id
* @return 主机记录id
*/
public static String updateDomainRecord(String RR, String type, String value, String recordId) {
UpdateDomainRecordRequest request = new UpdateDomainRecordRequest();
request.setRR(RR);
request.setType(type);
request.setValue(value);
request.setRecordId(recordId);
try {
UpdateDomainRecordResponse response = client.getAcsResponse(request);
String recordId1 = response.getRecordId();
return recordId1;
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
/**
* 修改解析记录状态
*
* @param recordId 解析记录id
* @param status 要修改为的状态 Enable启用,Disable停用
* @return 修改后的状态
*/
public static String setDomainRecordStatus(String recordId, String status) {
SetDomainRecordStatusRequest request = new SetDomainRecordStatusRequest();
request.setRecordId(recordId);
request.setStatus(status);
try {
SetDomainRecordStatusResponse response = client.getAcsResponse(request);
String status1 = response.getStatus();
return status1;
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
}
3.测试类
```java
import cn.itcast.util.DNSUtils;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@SpringBootTest
@RunWith(SpringRunner.class)
public class DnsTest {
@Test
public void test1() {
List<String> stringList = DNSUtils.queryDomainList();
System.out.println(stringList);
}
@Test
public void test2() {
DescribeDomainRecordsResponse response = DNSUtils.describeDomainRecords();
Long totalCount = response.getTotalCount();
Long pageNumber = response.getPageNumber();
Long pageSize = response.getPageSize();
List<DescribeDomainRecordsResponse.Record> list = response.getDomainRecords();
System.out.println(totalCount);
System.out.println(pageNumber);
System.out.println(pageSize);
for (DescribeDomainRecordsResponse.Record record : list) {
System.out.println(record.getRR());
}
}
// 添加主机解析记录
@Test
public void test3() {
String s = DNSUtils.addDomainRecord("huabei", "A", "127.0.0.1");
System.out.println(s);
}
// 删除解析记录
@Test
public void test4() {
String recordId = "21620105028983808";
String s = DNSUtils.deleteDomainRecord(recordId);
System.out.println(s);
}
// 更新解析记录
@Test
public void test5() {
String RR = "zhongyi";
String type = "A";
String value = "127.0.0.2";
String recordId = "21620200386026496";
String s = DNSUtils.updateDomainRecord(RR, type, value, recordId);
System.out.println(s);
}
// 修改解析记录的状态
@Test
public void test6() {
String recordId = "21620200386026496";
String status = "Disable";
String status1 = "Enable";
String s = DNSUtils.setDomainRecordStatus(recordId, status1);
System.out.println(s);
}
}