我使用此代码从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服务是否可用然后调用?
答案 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;
}