调用ip138的页面获取IP地址

本源码类参考http://p3p3pp3.yo2.cn开发的动态DNS程序
http://www.ajaxcn.net/archives/1671
 using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Text;
 
namespace tphp
{
    
/// <summary>
    
/// REST方式指令工具
    
/// </summary>
    public class RESTCommand
    {
        
/// <summary>
        
/// 发送指令
        
/// </summary>
        
/// <param name="URL">所在URL</param>
        
/// <param name="postinfo">指令信息</param>
        
/// <returns>返回的JSON结果</returns>
        public static string SendCommand(string URL, string postinfo)
        {
            
return htmlGetter(URL, postinfo, "UTF-8"truenullnull);
        }
 
 
        
public static string htmlGetter(string URL, string post, string codename, bool isPost, string[] headinfo, string Referer)
        {
 
            Encoding myEncoding 
= Encoding.GetEncoding(codename);
 
            HttpWebRequest request 
= (HttpWebRequest)HttpWebRequest.Create(URL);
            request.ServicePoint.Expect100Continue 
= false;
 
            
byte[] byteData = myEncoding.GetBytes(post);
            
if (isPost)
            {
                request.Method 
= "POST";
            }
            request.ContentType 
= "application/x-www-form-urlencoded";
            request.ContentLength 
= byteData.Length;
            request.UserAgent 
= "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
            
if (Referer != null)
            {
                request.Referer 
= Referer;
            }
 
            
if (headinfo != null)
            {
                
for (int i = 0; i < headinfo.Length; i++)
                {
                    request.Headers.Add(headinfo[i]);
                }
            }
 
            
//if (_isDebug)
            
//{
            
//    WebProxy myproxy = new WebProxy("127.0.0.1", 8888);
            
//    request.Proxy = myproxy;
            
//}
 
            
if (isPost)
            {
                
using (Stream requestStream = request.GetRequestStream())
                {
                    requestStream.Write(byteData, 
0, byteData.Length);
                }
            }
 
            
try
            {
                
//处理响应  
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    
using (StreamReader sr2 = new StreamReader(response.GetResponseStream(), myEncoding))
                    {
                        
string rhtml = sr2.ReadToEnd();
                        
return rhtml;
                    }
                }
            }
            
catch (WebException ex)
            {
                
throw;
            }
        }
    }
 
    
/// <summary>
    
/// 序列化工具
    
/// </summary>
    public class SerializationTool
    {
        
/// <summary>
        
/// 从Jsontext获取实体
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        
/// <param name="JsonText"></param>
        
/// <returns></returns>
        public static T GetObj<T>(string JsonText)
        {
            DataContractJsonSerializer ds 
= new DataContractJsonSerializer(typeof(T));
            MemoryStream ms 
= new MemoryStream(Encoding.UTF8.GetBytes(JsonText));
            T obj 
= (T)ds.ReadObject(ms);
            ms.Close();
 
            
return obj;
        }
 
        
/// <summary>
        
/// 从实体转换到JsonText
        
/// </summary>
        
/// <param name="myobj">实体实例</param>
        
/// <returns></returns>
        public static string ParseObj(object myobj)
        {
            DataContractJsonSerializer ds 
= new DataContractJsonSerializer(myobj.GetType());
            MemoryStream ms2 
= new MemoryStream();
            ds.WriteObject(ms2, myobj);
            
string JSONString = Encoding.UTF8.GetString(ms2.ToArray());
            ms2.Close();
 
            
return JSONString;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
 
namespace tphp
{
    
public partial class _Default : System.Web.UI.Page
    {
        
protected void Page_Load(object sender, EventArgs e)
        {
            
string pagehtml = RESTCommand.htmlGetter(@"http://www.ip138.com/ip2city.asp""""gb2312"falsenullnull);
            
string ipregex = @"您的IP地址是:\[(?<ip>.*)\]";
 
            Regex myRegex 
= new Regex(ipregex);
            Match mymatch 
= myRegex.Match(pagehtml);
 
 
            
string ipaddress = mymatch.Groups["ip"].Captures[0].Value;
            Response.Write(ipaddress);
        }
    }
}

调用ip138的页面获取IP地址

posted @ 2011-07-15 13:02  云飞扬IT  阅读(1664)  评论(0编辑  收藏  举报