http自己定义超时检測方法、主动抛出异常

上次为了解决无网路由器超时的问题,将问题重心转移到了HttpClient、 HttpUrLConnection上面,什么各种设置ReadTimeout、 connectionTimeOut,还有所谓的HttpParameters,最后均以失败告终。我也去网上搜了好多类似的东西。也见到非常多人这类问题的解决方式,但是都没有看到真正的解决方法。后来。。

 好了,废话不多说直接上代码。

class BaiduHttpCallable implements Callable<Boolean> {

    private GetUrlFromServerCallBack listener;
    BaiduHttpCallable(GetUrlFromServerCallBack listener) {
        this.listener = listener;
    }

    @Override
    public Boolean call() throws Exception {
        HttpURLConnection conn = null;
        try {
            URL url = new URL("http://www.baidu.com");
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            conn.connect();
            int responseCode = conn.getResponseCode();
            if (responseCode == 200) {
                listener.onRequestSuccess("wocao");
            } else {
               listener.onNetError();
            }
        } catch (Exception e) {
            listener.onNetError();
        }
        Log.e("luomz", "over");
        return true;
}
    public static  void testConnection(GetUrlFromServerCallBack listener) { 
        FutureTask<Boolean> testConnectionTask = new FutureTask<Boolean>(new BaiduHttpCallable(listener));
        new Thread(testConnectionTask).start();
        try {
             testConnectionTask.get(1, TimeUnit.SECONDS);
        } catch (Exception e) {
            //do something
            Log.e("luomz", "time out");
            listener.onNetTimeOut();
        }
}

    
    
    public interface GetUrlFromServerCallBack {
        public void onNetError();

        public void onNetTimeOut();

        public void onRequestSuccess(String result);
    }


上面的红色部分事实上是最中心的处理办法。利用FutureTask的堵塞检索主动抛出异常来解决本质问题。

近期身体不太好 头有点晕,语言组织的相当粗糙,只是能解决这个问题才是最重要的。

事实上那些setTimeOut之类的能够捕获到异常。可是前提能过一个域名检測的阶段(无网路由器就是过不了这里才一直堵塞导致你设置的超时方法无效)

鄙人也是刚入android半年,希望有问题大家一起学习,一起交流。


本人新建QQ群 99185354   期待技术男一起共同进步!


測试demo也不用给了,就直接调用里面的静态方法就能够了,这仅仅是提供一个思路。假设多线程同期监控的话 最好加上synchronized

最后祝大家都成为大牛。~~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值