【IT168技术文档】
/// <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; }