日期:2014-05-17  浏览次数:20962 次

windows8开发-判断网络链接状况

如果当前网络处于未连接状态,直接使用HttpClient中的PostAsync等方法发起数据请求时,会抛出异常。

所以,在进行网络的数据交互之前,应当进行网络状态的判断。如果网络可用,则再执行网络数据请求的操作。

在Windows8 API中可以通过NetworkConnectivityLevel这接口获取网络的状态。

具体代码如下:

    /// <summary>
    /// 提供与网络相关的数据设置或获取功能
    /// </summary>
    public class NetworkHelper
    {
        public static bool IsConnectedToInternet()
        {
            bool isConnected = false;

            ConnectionProfile cp = NetworkInformation.GetInternetConnectionProfile();
            if (cp != null)
            {
                NetworkConnectivityLevel cl = cp.GetNetworkConnectivityLevel();
                isConnected = (cl == NetworkConnectivityLevel.InternetAccess);
            }

            return isConnected;
        }
    }


使用的时候,可以这样实现:

HttpClient httpClient = new HttpClient();
if (NetworkHelper.IsConnectedToInternet())
{
	HttpResponseMessage response = await httpClient.PostAsync(new Uri(serverUri), new StringContent(postData));
	if (response.StatusCode == HttpStatusCode.OK)
	{
		// TODO: 处理返回的结果
	}
	// ...
}