【问题标题】:Android pinging an web service addressAndroid ping 一个 Web 服务地址
【发布时间】:2011-08-26 05:55:18
【问题描述】:

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

我写了代码,

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 在命令提示符中 ping,但在代码中它总是返回 false。

Web 服务 url 是:http://192.168.1.56:8080/WIP/services/ConnectionDAO?wsdl,这里也抛出 UnknownHostException。

【问题讨论】:

  • 你知道 192.168.x.x 是为私有子网保留的,对吧?大多数外部网络基础设施将拒绝将流量传递到该范围,因为它被假定为错误或某种攻击。因此,例如,您使用其移动数据套餐的手机无法联系您的有线/DSL 路由器。

标签: android web-services localhost ping inet


【解决方案1】:

我认为 ping 没有任何意义。尝试从 Web 服务下载,如果失败则使用数据库。

【讨论】:

  • 谢谢凯。但是在这种情况下,如果服务停止,它会抛出异常并在那一刻停止。我曾尝试这样做,但在出现异常后它不会继续执行而是立即停止。
  • 嗯?对不起,但我不明白你的意思。捕获异常并继续处理。
  • 我已经捕捉到异常,但在运行时,屏幕变为空白,并且在 logcat 中显示消息“启动超时已过期,放弃唤醒锁定”和 java.net.SocketException:操作超时。
  • 你应该在单独的线程中执行你的逻辑,或者使用异步任务。不要在ui线程中执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
相关资源
最近更新 更多