编程技术分享平台

网站首页 > 技术教程 正文

利用Godaddy API 实现DNS批量解析,C#代码

xnh888 2024-11-07 13:17:14 技术教程 47 ℃ 0 评论

本文采用api接口实现域名DNS批量解析。

官方API文档地址:https://developer.godaddy.com/doc/endpoint/domains#/

接口不是很全,不支持NS单独设定,DNS解析记录清空。

采用的是替代方式。这里采用records接口来替代DNS记录。


下面是具体实现的方法,

1、获取域名已有 NS
这一步不可少。批量DNS接口必须包含两个NS记录。而部分域名没法更改NS记录,这里采用默认的NS记录

string api = #34;v1/domains/{domain}";
string html = getUrlHtml(api);

if (!html.Contains("nameServers"))
        return "Fail";

html = _uu.getStrPart(html, "nameServers\":[", "]").Replace("\"", "");
string[] arrNs = html.Split(',');

2、提交新的解析

api = #34;v1/domains/{domain}/records";
string data = "";
            
                
//组装数据包
if ( is_ www)	{
			data += makeItemLine( www,target, recordType) ;
}
if ( is_ at & recordType ==' A" ){
     data += makeItemLine( @,target, recordType) ;
}
if ( is_ star && recordType ==” A )				{
			data += makeItemLine( *,target, recordType) ;
}
			
string records_NS01 = "{\"data\":\"" + arrNs[0] + "\",\"name\":\"@\",\"ttl\":3600,\"type\":\"NS\"}";
string records_NS02 = "{\"data\":\"" + arrNs[1] + "\",\"name\":\"@\",\"ttl\":3600,\"type\":\"NS\"}";

string postData = "";
data = _uu.trimTail(data);

postData = #34;[{data},{records_NS01},{records_NS02}]";
html = postUrlHtml(api, postData, "PUT");

到这里,操作结束了。调试经常出现400错误,具体原因可以通过WebException异常获取


获取Godaddy返回的异常信息

catch (WebException e)
{
      sHtml = e.Message;
  
      // 获取详细的400错误提示
      using (Stream stream = e.Response.GetResponseStream())
      {
        	using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
          {
                 sHtml = reader.ReadToEnd();
          }
     }
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表