springboot_阿里云二级域名申请-DNS解析

阿里云二级域名申请-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);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值