2011-05-16 60 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