如何在单声道android中检查网络服务?

时间:2016-02-25 10:05:02

标签: android xamarin

我使用此代码从xamarin调用Web服务:

void OnWebserviceRetrievedInformation1 (object sender, EventArgs e)
{
    MyService.MonoDataService ms = new MyService.MonoDataService ();
    ms.Url = "http://10.0.2.2:11339/MonoDataService.asmx";
    TextView tx=FindViewById<TextView> (Resource.Id.textView1);
    tx.Text = ms.Hello ("Hadi");
}

但是当网络服务器离线时我的应用程序处于循环中! 如何检查Web服务是否可用然后调用?

2 个答案:

答案 0 :(得分:0)

检查使用此方法:

public boolean isConnected()
{
    try{
        ConnectivityManager cm = (ConnectivityManager) getSystemService
                                                    (Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();

        if (netInfo != null && netInfo.isConnected())
        {
            //Network is available but check if we can get access from the network.
            URL url = new URL("http://10.0.2.2:11339/MonoDataService.asmx"");
            HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(2000); // Timeout 2 seconds.
            urlc.connect();

            if (urlc.getResponseCode() == 200)  //Successful response.
            {
                return true;
            } 
            else 
            {
                 Log.d("NO INTERNET", "NO INTERNET");
                return false;
            }
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return false;
}

答案 1 :(得分:0)

尝试这样的事情:

public bool IsConnected()
{
    try{
        var cm = (ConnectivityManager)GetSystemService (Context.ConnectivityService);
        var netInfo = cm.ActiveNetworkInfo;

        if (netInfo != null && netInfo.IsConnected)
        {
            //Network is available but check if we can get access from the network.
            var url = new URL("http://www.Google.com/");
            var urlc = (HttpURLConnection) url.OpenConnection();
            urlc.SetRequestProperty("Connection", "close");
            urlc.ConnectTimeout = 2000; // Timeout 2 seconds.
            urlc.Connect();

            if (urlc.ResponseCode == 200)  //Successful response.
                return true;
            else {
                Log.Debug ("No Internet", "No internet connection.");
                return false;
            }
        }
    }
    catch(Exception ex)
    {
        System.Diagnostics.Debug.WriteLine (ex.Message);
    }
    return false;
}