上次为了解决无网路由器超时的问题,将问题重心转移到了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。

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

http自己定义超时检測方法、主动抛出异常的更多相关文章

  1. Matlab人脸检測方法(Face Parts Detection)具体解释

    今天同学让我帮忙制作一个人脸表情识别的样本库,当中主要是对人脸进行裁剪,这里用到了一个相对较新的Matlab人脸检測方法Face Parts Detection.网上百度了一下发现关于Matlab人脸 ...

  2. cocos2d-html5 碰撞检測的几种方法

    游戏中的碰撞还是比較多的,比方角色与角色的碰撞,角色与墙壁的碰撞,角色与怪物的碰撞等,都须要 进行碰撞的检測,来触发一定的事件 近期在尝试制作一个小游戏的时候须要用到碰撞检測,然后就查了下资料,并在论 ...

  3. 【从零学习openCV】IOS7下的人脸检測

    前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...

  4. C++内存泄露检測原理

    转自:http://hi.baidu.com/jasonlyy/item/9ca0cecf2c8f113a99b4981c 本文针对 linux 下的 C++ 程序的内存泄漏的检測方法及事实上现进行探 ...

  5. HTML5特性检測

    HTML5特性检測:    1.检測全局对象:诸如window或navigator是否拥有特定的属性    2.创建元素:检測该元素的DOM对象是否拥有特定的属性    3.创建元素:检測该元素的DO ...

  6. 图像边缘检測--OpenCV之cvCanny函数

    图像边缘检測--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...

  7. Cocos2d-x教程(34)-三维物体OBB碰撞检測算法

    欢迎增加Cocos2d-x 交流群:193411763 个中心点.1个旋转矩阵和3个1/2边长(注:一个旋转矩阵包括了三个旋转轴,若是二维的OBB包围盒则是一个中心点,两个旋转轴,两个1/2边长). ...

  8. 目标检測的图像特征提取之(一)HOG特征

    1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...

  9. 行人检測之HOG特征(Histograms of Oriented Gradients)

    之前的文章行人计数.计次提到HOG特征这个概念,这两天看了一下原版的论文,了解了一下HOG特征的原理,并依据自己的理解将这种方法的流程写了下来,假设有不正确的地方欢迎指正. HOG(Histogram ...

随机推荐

  1. Http协议详解(转)>>>写的很好

    声明:本片文章非原创,仅供自己学习并分享 内容来源于博客园作者MIN飞翔的HTTP协议详解地址http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html ...

  2. Ambari是啥?主要是干啥的?

    简单来说,Ambari是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率. ...

  3. C++ Primer(第4版)-学习笔记-第2部分:容器和算法

    第9章 顺序容器 顺序容器和关联容器 顺序容器内的元素按其位置存储和访问. 关联容器,其元素按键(key)排序. 顺序容器(sequential container). 顺序容器的元素排列次序与元素值 ...

  4. 搭建本地wordpress

    1.首先,下载xampp,安装按默认勾选即可. 2.安装完成后,启动Apache和MySQL这两个服务. 启动后变成绿色,表示启动成功. 3.点击MySQL项的Admin进入数据库后台. 4.点击用户 ...

  5. build.gradle(Mdule.app)依赖库相关

    dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //noinspection GradleCompati ...

  6. C#入门经典 Chapter1&2

    Chapter1 1.1 .Net Framework的内容 主要包含一个庞大的代码库,可以在客户端通过OOP来使用这些代码(OOP:Object Oriented Programming面对对象程序 ...

  7. 在Windows下安装Elasticsearch5.0

    1.准备工作 安装和配置Java环境 2.下载 地址:https://www.elastic.co/downloads/elasticsearch 老版本:https://www.elastic.co ...

  8. 查看APK包名签名等信息

    有些游戏第三方比如分享需要配置游戏包名和签名,不同渠道包名签名又不同,所以时常需要查看不同apk包等签名信息,之前是使用等微博开放平台的手机客户端查看apk签名,前提是知道包名,网上找了下查看签名和包 ...

  9. HashMap中capacity、loadFactor、threshold、size等概念的解释

    约定 约定前面的数组结构的每一个格格称为桶 约定桶后面存放的每一个数据称为bin bin这个术语来自于JDK 1.8的HashMap注释. size size表示HashMap中存放KV的数量(为链表 ...

  10. Android控件的继承关系

    1.View,ViewGroup >View: }1.所有高级UI组件都继承View类而实现的 }2.一个View在屏幕上占据一块矩形区域 }3. 负责渲染 }4.负责处理发生的事件 }5.设置 ...