2011-05-16 80 views
0

我想实现一个功能,它将ping web服务的地址,如果它返回true,那么应用程序将通过web服务运行,否则它将使用设备的数据库(sqlite)。Android ping一个web服务地址

我写的代码,

public boolean lookfunc() 
{ 
    String name1=name; 
    boolean reachable=false; 
    try { 
      InetAddress address = InetAddress.getByName("192.168.1.56"); 
      reachable = address.isReachable(3000); 
      System.out.println("address.isReachable(3000)"+reachable); 

    } 
    catch (UnknownHostException e){ 
       System.err.println("Unable to lookup "); 
    } 
    catch (IOException e){ 
       System.err.println("Unable to reach "); 
    } 
     catch(Exception e1){System.out.println("Exception raised");} 
     return reachable; 
} 

192.168.1.56在强制在命令提示符下,但在这里它的代码总是返回false地址。

而web服务的网址是:http://192.168.1.56:8080/WIP/services/ConnectionDAO?wsdl,这里也抛出UnknownHostException。

+0

你确实知道192.168.x.x是为私有子网保留的,对吧?大多数外部网络基础设施将拒绝将通信量传递到该范围,因为它被认为是错误的或某种类型的攻击。因此,例如,您在其移动数据计划上的手机无法联系您的有线/ DSL路由器。 – 2011-05-16 07:57:49

回答

0

我没有看到一个点pinging。尝试从Web服务下载,如果失败则使用数据库。

+0

谢谢Kaj。但仍然在这种情况下,如果服务停止,它会抛出异常并在该瞬间停止。我试图这样做,但在例外之后它不保留执行,而是立即停止。 – Neetesh 2011-05-16 08:01:29

+0

咦?对不起,但我不明白你的意思。捕捉异常并继续处理。 – Kaj 2011-05-16 08:14:34

+0

我已经捕获异常,但在运行时,屏幕变为空白,并在logcat中显示消息“启动超时过期,放弃唤醒锁定”和java.net.SocketException:操作超时。 – Neetesh 2011-05-16 08:23:22