///
1<summary>
2/// 从“中国万网( www.net.cn )”实现域名查询功能
3/// </summary>
///
1<param name="Domain"/>
域名
///
1<param name="Ext"/>
后缀(cn|com|net|name|org|comcn|netcn|orgcn|govcn|info|biz|tv|cc)
/// 以上依次代表:.cn|.com|.net|.name|.org|.com.cn|.net.cn|.org.cn|.gov.cn|.info|.biz|.tv|.cc
///
1<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 = "
1<tr bgcolor='\"#b9d9ff\"'>"; //需要的"中国万网"返回信息的开始特征
2const string cntTableB = "<tr bgcolor='\"#993300\"'>"; //"中国万网"返回信息中的一个table的开始部分的特征
3
4//已知"中国万网"查询结果的三种情况的特征
5const string cntQn = "此域名不能注册";
6const string cntReg = "已被注册的域名";
7const string cntNotReg = "未被注册的域名";
8#endregion
9
10#region 这个部分选用
11//以下用来替换"中国万网"返回信息中table的样式
12const string cntTableR = "<tr><td>";
13const string cntTableE = "</td></tr>";
14const string cntTable = "<table align="center" bgcolor='\"#F7F7F7\"' border="1" bordercolor='\"#FFFFFF\"' cellpadding='\"1\"' cellspacing='\"0\"'><tr>";
15
16//自定义查询结果,用于页面显示
17const string cntAble = "恭喜你,这是一个";
18const string cntNotConnect = "不能连接到服务器,请重试!";
19#endregion
20
21string strResult = string.Empty;
22
23try
24{
25#region 这里执行查询
26//从"中国万网"查询域名
27string strURL = cntURLB + Domain + cntURLM + Ext;
28//建立请求
29WebRequest wRequest = WebRequest.Create( strURL );
30// wRequest.Proxy = new WebProxy( "server", 8080 );//视情况设置代理
31wRequest.Timeout = 30000;
32WebResponse wResponse = wRequest.GetResponse();//执行请求
33Stream responseStream = wResponse.GetResponseStream();//读取万网返回结果
34StreamReader reader = new StreamReader( responseStream, Encoding.Default );
35string responseHTML = reader.ReadToEnd();//将所有结果保存到字符串
36wResponse.Close();
37#endregion
38
39//取出万网查询结果
40strResult = responseHTML.Substring( responseHTML.IndexOf( cntMark ), responseHTML.IndexOf( cntTableB ) - responseHTML.IndexOf( cntMark ) );
41
42#region 这个部分选用
43//根据需要调整结果
44strResult = cntTable + strResult + cntTableR;
45if( responseHTML.IndexOf( cntQn ) > -1 )
46{
47strResult += cntQn + "!" + cntTableE;
48}
49else if( responseHTML.IndexOf( cntReg ) > -1 )
50{
51strResult += cntReg + "!" + cntTableE;
52}
53else if( responseHTML.IndexOf( cntNotReg ) > -1 )
54{
55strResult += cntAble + cntNotReg + "!" + cntTableE;
56}
57else
58{
59strResult = responseHTML;
60}
61#endregion
62}
63catch( WebException )
64{
65strResult = cntNotConnect + "\n";
66}
67catch( UriFormatException err)
68{
69strResult = err.Message;
70}
71
72return strResult;
73}</tr></table></tr></tr>