WP7:获得本机外网IP

一种方法,和PC端原理一样。通过读取某一网站数据,返回IP地址。

首先 我们判断下是否联网:

DeviceNetworkInformation.IsNetworkAvailable


需要引入命名空间:

using Microsoft.Phone.Net.NetworkInformation;

下面是方法:

public static void GetResponseText(string url, Action<string> action)
        {
            var request = WebRequest.CreateHttp(url);

            request.BeginGetResponse(ar =>
            {
                string responseText;
                using (var response = request.EndGetResponse(ar))
                    responseText = GetResponseText(response);

                int start = responseText.IndexOf("[") + 1;
                int end = responseText.IndexOf("]");
                string tempip = responseText.Substring(start, end - start);
                string ip = tempip;
                Deployment.Current.Dispatcher.BeginInvoke(() => action(ip));
      }, null);
        }

通过传入的一个URL,然后 GetResponseText(response);

public static string GetResponseText(WebResponse response)
        {
            using (Stream stream = response.GetResponseStream())
            {
                return new StreamReader(stream).ReadToEnd();
            }
        }

将读取到的Text 赋给 responseText 。然后把得到的字符串截取。

最后调用方法:

if (DeviceNetworkInformation.IsNetworkAvailable)
                GetResponseText("http://www.ip138.com/ip2city.asp", s => textBlock.Text = "本机IP: " + s);

“http://www.ip138.com/ip2city.asp” 是获得IP 的网址。

OK ,完成。

posted @ 2011-12-09 19:18  Walsh  阅读(791)  评论(2编辑  收藏  举报