如果当前网络处于未连接状态,直接使用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: 处理返回的结果
}
// ...
}