1.前期准备

1.登入阿里云控制台创建acesskeys。得到acesskey id.acesskey secret.以及获取的域名domainname:xxx.com

2.申请一个阿里云域名

3.sdk和所需jar包:aliyun-java-sdk-alidns-2.0.6.jar.aliyun-java-sdk-core-4.1.1.jar.gson-2.8.5.

环境:eclipse+maven

2.介绍

1.获取服务器ip.

2.阿里云为我们提供了云解析的api可以拿来用,获取到详细的域名解析记录,进而更改自己的域名解析值。

3.更新域名解析记录。

3.文件结构

4.代码实现

aliyun.java

public class Aliyun implements Serializable {/** 序列号 */private static final long serialVersionUID = 1L;/** IPV4地址,当前电脑在公网的ip地址 */private String ipV4;/** 主机记录,如果要解析@.exmaple.com,主机记录要填写"@”,而不是空 */private String rr;/** 解析记录类型,参见解析记录类型格式 */private String type;/** 解析记录的ID,此参数在添加解析时会返回,在获取域名解析列表时会返回 */private String recordId;/** 生效时间,默认为600秒(10分钟),参见TTL定义说明。购买VIP可以升级为1秒生效。没必要1秒 */

DemolistDomains.java

package com.tony.ddns;import java.util.List;import com.aliyuncs.alidns.model.v20150109.DescribeDomainsRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainsResponse;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainsResponse.Domain;
import com.tony.ddns.pojo.Aliyun;
import com.tony.ddns.util.AliDdnsUtils;/*** 阿里sdk* * @author tony**/
public class DemoListDomains {/*** 设置参数* * @param request*/public void setParam(DescribeDomainsRequest request, Aliyun yun) {// 设置参数request.putQueryParameter("RecordId", yun.getRecordId());request.putQueryParameter("RR", yun.getRr());request.putQueryParameter("Type", yun.getType());request.putQueryParameter("Value", yun.getIpV4());request.putQueryParameter("TTL", yun.getTTL());}/*** 解析DNS信息*/public void analysisDns(Aliyun yun) {String actionName = "UpdateDomainRecord";DescribeDomainsRequest request = AliDdnsUtils.getRequest(actionName);DescribeDomainsResponse response;setParam(request, yun);try {response = AliDdnsUtils.getClient().getAcsResponse(request);List<Domain> list = response.getDomains();for (Domain domain : list) {System.out.println(domain.getDomainName());}} catch (Exception e) {e.printStackTrace();}}}

updatedomainrecord.java

package com.tony.ddns;import java.util.List;import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsResponse;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsResponse.Record;
import com.tony.ddns.pojo.Aliyun;
import com.tony.ddns.util.AliDdnsUtils;
import com.tony.ddns.util.LocalPublicIpv4;
import com.tony.ddns.util.PropertiesUtil;/*** 调用阿里api,更新DNS域名解析** @author tony**/
public class UpdateDomainRecord {/*** 设置域名参数* * @param request*/public void setParam(DescribeDomainRecordsRequest request) {String domainName = PropertiesUtil.getProperty("DomainName");request.putQueryParameter("DomainName", domainName);}/*** 解析DNS信息*/public void analysisDns() {// 获取公网ipLocalPublicIpv4 ip = new LocalPublicIpv4();String ipV4 = ip.publicip();// 获取解析的数据String actionName = "DescribeDomainRecords";DescribeDomainRecordsResponse response;// 获取requestDescribeDomainRecordsRequest request = AliDdnsUtils.getRequestQuery(actionName);// 设置request参数setParam(request);try {response = AliDdnsUtils.getClient().getAcsResponse(request);// 声明解析对象DemoListDomains demo = new DemoListDomains();// 获取阿里云的数据List<Record> list = response.getDomainRecords();if (list == null || list.isEmpty()) {return;}// 更新ipRecord record = list.get(0);Aliyun yun = new Aliyun();// 进行判定记录是否需要更新if (record.getValue().equals(ipV4)) {// 不需要更新,继续下次循环System.out.println("当前域名解析地址为:" + ipV4 + "不需要更新!");} else {System.out.println("更新域名:" + record.getDomainName());// 进行替换关键数据yun.setIpV4(ipV4);yun.setRecordId(record.getRecordId());yun.setRr(record.getRR());yun.setTTL(record.getTTL());yun.setType(record.getType());System.out.println("域名更换ip开始");demo.analysisDns(yun);System.out.println("域名更换ip结束");}} catch (Exception e) {e.printStackTrace();System.out.println("域名更换异常");}}
}

apprun.java(主函数入口)

package com.tony.ddns;/*** 运行时入口* * @author tony**/
public class AppRun {public static void main(String[] args) {System.out.println("开始ddns检查");UpdateDomainRecord record = new UpdateDomainRecord();record.analysisDns();System.out.println("ddns运行结束");}}

ddns.properties(配置文件)

AccessKeyID=input your acesskeyid
AccessKeySecret=input your acesskeysecret
DomainName=input your domainname(xxx.com)

5.总结

通过阿里云SDK可以将域名实时解析并更新至阿里云。获取ip的api我使用的是2019.ip138.com这个api。源代码

基于阿里云的SDK的域名解析的java实现相关推荐

  1. 基于阿里云服务器的Qt SDK配置

    目录 1.Mysql配置 1.1安装Mysql服务器和客户端 1.2配置Mysql编码格式 1.3重启Mysql 1.4登陆Mysql 1.5查看Mysql编码 1.6安装Mysqlclient驱动 ...

  2. 基于阿里云IOT Studio和STM32的电机远程监测设计

    今天来总结一下用阿里云的IOT Studio做的一个电机远程监控的小系统吧! 说来话长,在去年九月份的时候,我踏入了研究生的行列.我的导师是搞电机方向的,但我本科是测控的,考虑我的基础,导师给我推荐了 ...

  3. 阿里云DDNS(动态域名解析)获取解析并对比

    一.问题由来 昨天家里停电了,来电后IP地址改变了.但是并没有更新到域名解析数据上.所以感觉之前写的代码有一丝丝的不稳定. 今天重新写一个直接点的.直接查询域名服务器的解析地址,与本地公网IP地址比对 ...

  4. 基于阿里云搭建的适合初创企业的轻量级架构--架构总结

    ----基于阿里云搭建的适合初创企业的轻量级架构 前言 在项目的初期往往存在很多变数,业务逻辑时刻在变,而且还要保证快速及时,所以,一个灵活多变.快速部署.持续集成并可以适应多种情况的架构便显得尤为重 ...

  5. 揭秘阿里云 RTS SDK 如何实现直播降低延迟和卡顿

    简介:这个夏天,没什么能够比一场酣畅淋漓的奥运比赛来的过瘾.但是,在视频平台直播观看比赛也有痛点:"卡顿" 和 "延时".受限于不同地域.复杂的网络情况.传输速 ...

  6. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿

    简介: RTS NetSDK是未来直播和通信一体化SDK的基石.在RTS NetSDK之上,加一个Multimedia Framework,以及QoS消息处理,就可以构成一个一体化SDK.这对于已经有 ...

  7. 如何基于阿里云搭建适合初创企业的轻量级架构?

    ----基于阿里云搭建的适合初创企业的轻量级架构 前言 在项目的初期往往存在很多变数,业务逻辑时刻在变,而且还要保证快速及时,所以,一个灵活多变.快速部署.持续集成并可以适应多种情况的架构便显得尤为重 ...

  8. 基于阿里云实现游戏数据运营(附Demo)

    摘要: 原作者:阿里云解决方案架构师,陆宝.通过阅读本文,您可以学会怎样使用阿里云的maxcompute搭建一套数据分析系统. 一.总览 一个游戏/系统的业务数据分析,总体可以分为图示的几个关键步骤: ...

  9. 基于阿里云MaxCompute实现游戏数据运营

    摘要: 一.总览 一个游戏/系统的业务数据分析,总体可以分为图示的几个关键步骤:   1.数据采集:通过SDK埋点或者服务端的方式获取业务数据,并通过分布式日志收集系统,将各个服务器中的数据收集起来并 ...

最新文章

  1. open***实现两地内网互访(二) 两地内网互访
  2. Laravel大型项目系列教程(二)之用户管理
  3. arduino与matlab联调出现问题
  4. 2017-2018-1 20155229 《信息安全系统设计基础》第十三周学习总结
  5. Redis学习日记-05:SORT命令
  6. 阿里合伙人名单曝光;百度网盘回应“不买会员限速”;库克:不担心苹果在华表现 | 极客头条...
  7. 区块链 Fisco bcos 智能合约(12)-Solidity的高级特性
  8. (金税盘版)开票软件,登录提示密钥容器不存在,怎么处理?
  9. NestJS生成二维码
  10. unapp Error: Unbalanced delimiter found in string
  11. 函数——求三个数的最大值
  12. 用stlstack实现深搜_同心筑共未来,深信服是认真的
  13. python入门(六)——python数据容器
  14. 苹果使用过程的一些小技巧
  15. JAVA如何调用API
  16. TSINGSEE青犀视频再度荣获腾讯云+社区2022年度优秀作者!
  17. 用python画出二叉树_Python与二叉树定价建模,像奇异博士一样推演未来并做出正确的选择...
  18. javaScript写的飞机大战小游戏
  19. 安装widows和linux双系统,启动项问题
  20. matlab代码搜集网站,欢迎补充

热门文章

  1. IDC已是夕阳产业?2016传统IDC商何去何从
  2. 【跟学C++】C++STL标准模板库——算法详细整理(中)(Study18)
  3. 【游戏 AI】7 - AI 引擎
  4. 剑指offer-Java实现
  5. 蓝牙Mesh学习总结一(蓝牙Mesh介绍)
  6. 微信小程序swiper闪烁抖动卡死问题
  7. 三星c9000刷android7.0,三星C9 Pro刷机教程_三星C9000线刷官方系统rom包_可救砖
  8. 当互联网金融遇到区块链
  9. vue 使用高德JSapi 实现轨迹回放和海量点效果(点击显示详情提示窗口) 采用AMapLoader 和 AMapUI
  10. css的漂亮图片背景与简单的班级成绩表 ,,,