日期:2014-05-17 浏览次数:20962 次
如果当前网络处于未连接状态,直接使用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: 处理返回的结果 } // ... }