zoukankan      html  css  js  c++  java
  • 实现域名查询功能

    /// <summary>
    /// 从“中国万网(www.net.cn)”实现域名查询功能
    /// </summary>
    /// <param name="Domain">域名</param>
    /// <param name="Ext">后缀(cn|com|net|name|org|comcn|netcn|orgcn|govcn|info|biz|tv|cc)</param>
    /// 以上依次代表:.cn|.com|.net|.name|.org|.com.cn|.net.cn|.org.cn|.gov.cn|.info|.biz|.tv|.cc
    /// <returns></returns>
    public static string Whois( string Domain, string Ext )
    {
    #region 这部分可能会变化,取决于“中国万网”是否改变查询方式和显示查询结果的那个网页的内容
    const string cntURLB = "http://panda.www.net.cn/cgi-bin/Check.cgi?domain=";//http请求头部
    const string cntURLM = "&ext="; //http请求中间部分(变量)
    const string cntMark = "<tr bgcolor=\"#b9d9ff\">"; //需要的"中国万网"返回信息的开始特征
    const string cntTableB = "<tr bgcolor=\"#993300\">"; //"中国万网"返回信息中的一个table的开始部分的特征

    //已知"中国万网"查询结果的三种情况的特征
    const string cntQn = "此域名不能注册";
    const string cntReg = "已被注册的域名";
    const string cntNotReg = "未被注册的域名";
    #endregion

    #region 这个部分选用
    //以下用来替换"中国万网"返回信息中table的样式
    const string cntTableR = "<tr><td>";
    const string cntTableE = "</td></tr></table>";
    const string cntTable = "<table align=center border=1 bordercolor=\"#FFFFFF\" cellpadding=\"1\" cellspacing=\"0\" bgcolor=\"#F7F7F7\"><tr>";

    //自定义查询结果,用于页面显示
    const string cntAble = "恭喜你,这是一个";
    const string cntNotConnect = "不能连接到服务器,请重试!";
    #endregion

    string strResult = string.Empty;

    try
    {
    #region 这里执行查询
    //从"中国万网"查询域名
    string strURL = cntURLB + Domain + cntURLM + Ext;
    //建立请求
    WebRequest wRequest = WebRequest.Create( strURL );
    // wRequest.Proxy = new WebProxy( "server", 8080 );//视情况设置代理
    wRequest.Timeout = 30000;
    WebResponse wResponse = wRequest.GetResponse();//执行请求
    Stream responseStream = wResponse.GetResponseStream();//读取万网返回结果
    StreamReader reader = new StreamReader( responseStream, Encoding.Default );
    string responseHTML = reader.ReadToEnd();//将所有结果保存到字符串
    wResponse.Close();
    #endregion

    //取出万网查询结果
    strResult = responseHTML.Substring( responseHTML.IndexOf( cntMark ), responseHTML.IndexOf( cntTableB ) - responseHTML.IndexOf( cntMark ) );

    #region 这个部分选用
    //根据需要调整结果
    strResult = cntTable + strResult + cntTableR;
    if( responseHTML.IndexOf( cntQn ) > -1 )
    {
    strResult += cntQn + "!" + cntTableE;
    }
    else if( responseHTML.IndexOf( cntReg ) > -1 )
    {
    strResult += cntReg + "!" + cntTableE;
    }
    else if( responseHTML.IndexOf( cntNotReg ) > -1 )
    {
    strResult += cntAble + cntNotReg + "!" + cntTableE;
    }
    else
    {
    strResult = responseHTML;
    }
    #endregion
    }
    catch( WebException )
    {
    strResult = cntNotConnect + "\n";
    }
    catch( UriFormatException err)
    {
    strResult = err.Message;
    }

    return strResult;
    }
  • 相关阅读:
    Promise关键知识
    CSS实现简易的轮播图
    绝对定位和相对定位的一些特性
    行内元素及其浮动
    webpack实践总结
    less语法详解
    js模拟事件
    jquery各种事件绑定的区别
    前端路由实现的关键知识点
    js鼠标事件相关知识
  • 原文地址:https://www.cnblogs.com/skylaugh/p/407041.html
Copyright © 2011-2022 走看看