public static string GetIP()
        {
            Uri uri = new Uri("http://www.ip138.com/ips8.asp");//查本机网络IP的网页
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = 0;
            req.CookieContainer = new CookieContainer();
            req.GetRequestStream().Write(new byte[0], 0, 0);
            HttpWebResponse res = (HttpWebResponse)(req.GetResponse());
            StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));
            string s = rs.ReadToEnd();
            rs.Close();
            req.Abort();
            res.Close();
            Match m = Regex.Match(s, @"IP:\[(?<IP>[0-9\.]*)\]");
            if (m.Success)
            {
                return m.Groups["IP"].Value;
            }
            else
            {
                return "搜查中...";
            }
        } 
请问GetIP()这个方法有写错吗?我调用返回到Lable的时候,是返回搜查中的,请问我的语句是否些错了,因而无法获取外网IP?然后请问怎样解决问题??

解决方案 »

  1.   

    public static string GetIP()
            {
                Uri uri = new Uri("http://www.ip138.com/ips8.asp");//查本机网络IP的网页
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = 0;
                req.CookieContainer = new CookieContainer();
                req.GetRequestStream().Write(new byte[0], 0, 0);
                HttpWebResponse res = (HttpWebResponse)(req.GetResponse());
                StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));
                string s = rs.ReadToEnd();
                rs.Close();
                req.Abort();
                res.Close();
    Match m = Regex.Match(Html, @"(?is)(?<=您的IP地址是)(?:(?!</?\]).)*(?=\])");
                if (m.Success)
                {
                    return m.Value.Remove(0, 2);
                }
                else
                {
                    return  "搜查中...";
                }
    }
      

  2.   

    @"IP:\[(?<IP>[0-9\.]*)\]"-------------------
    正则是否有问题,没匹配到
      

  3.   

    public static string GetIP()
            {
                Uri uri = new Uri("http://www.ip138.com/ips8.asp");//查本机网络IP的网页
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = 0;
                req.CookieContainer = new CookieContainer();
                req.GetRequestStream().Write(new byte[0], 0, 0);
                HttpWebResponse res = (HttpWebResponse)(req.GetResponse());
                StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));
                string s = rs.ReadToEnd();
                rs.Close();
                req.Abort();
                res.Close();
    Match m = Regex.Match(s, @"(?is)(?<=您的IP地址是)(?:(?!</?\]).)*(?=\])");
                if (m.Success)
                {
                    return m.Value.Remove(0, 2);
                }
                else
                {
                    return  "搜查中...";
                }
    }
      

  4.   

    成功了,qlzf11140820可以解释一下原因吗?
      

  5.   

    那这段是什么意思啊?:m.Value.Remove(0, 2);