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。
最后祝大家都成为大牛。~~~
http自己定义超时检測方法、主动抛出异常的更多相关文章
- Matlab人脸检測方法(Face Parts Detection)具体解释
今天同学让我帮忙制作一个人脸表情识别的样本库,当中主要是对人脸进行裁剪,这里用到了一个相对较新的Matlab人脸检測方法Face Parts Detection.网上百度了一下发现关于Matlab人脸 ...
- cocos2d-html5 碰撞检測的几种方法
游戏中的碰撞还是比較多的,比方角色与角色的碰撞,角色与墙壁的碰撞,角色与怪物的碰撞等,都须要 进行碰撞的检測,来触发一定的事件 近期在尝试制作一个小游戏的时候须要用到碰撞检測,然后就查了下资料,并在论 ...
- 【从零学习openCV】IOS7下的人脸检測
前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...
- C++内存泄露检測原理
转自:http://hi.baidu.com/jasonlyy/item/9ca0cecf2c8f113a99b4981c 本文针对 linux 下的 C++ 程序的内存泄漏的检測方法及事实上现进行探 ...
- HTML5特性检測
HTML5特性检測: 1.检測全局对象:诸如window或navigator是否拥有特定的属性 2.创建元素:检測该元素的DOM对象是否拥有特定的属性 3.创建元素:检測该元素的DO ...
- 图像边缘检測--OpenCV之cvCanny函数
图像边缘检測--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...
- Cocos2d-x教程(34)-三维物体OBB碰撞检測算法
欢迎增加Cocos2d-x 交流群:193411763 个中心点.1个旋转矩阵和3个1/2边长(注:一个旋转矩阵包括了三个旋转轴,若是二维的OBB包围盒则是一个中心点,两个旋转轴,两个1/2边长). ...
- 目标检測的图像特征提取之(一)HOG特征
1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...
- 行人检測之HOG特征(Histograms of Oriented Gradients)
之前的文章行人计数.计次提到HOG特征这个概念,这两天看了一下原版的论文,了解了一下HOG特征的原理,并依据自己的理解将这种方法的流程写了下来,假设有不正确的地方欢迎指正. HOG(Histogram ...
随机推荐
- cocos2dx实现单机版三国杀(一)
首先需要一个UI交互类 GameUI -layer 一个游戏驱动类,负责游戏逻辑的循环 暂时定为GameScene- scene GameScene obj 调用update 更新游戏,addch ...
- session一致性架构设计实践.
一.缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...
- xml操作-Nested exception: org.xml.sax.SAXParseException: White spaces are required between publicId and systemId. 异常处理
异常如下: org.dom4j.DocumentException: Error on line 2 of document file:///D:/workspaces/struts2/lesson0 ...
- 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具
https://gitee.com/bitprince/memory 1. 概述 1.1 连接.语句和结果集 从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1.连接(connection) 2 ...
- JS——Boolean(逻辑)对象
Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). 创建 Boolean 对象的语法: new Boolean(value); //构造函数 Boolean(valu ...
- js分页插件
//分页插件1function showView(option) { //参数定义id,页容量,当前页,总数,页总数 var id = option.id, pageSiz ...
- js 获取 checkbox[] 值
$("#btnAdd1").click(function () { console.log($("form").serialize()); var checkb ...
- vue项目中使用百度地图的方法
1.在百度地图申请密钥: http://lbsyun.baidu.com/ 将 <script type="text/javascript" src="http: ...
- 远程连接阿里云服务器ping不通ip解决方案
搭建了阿里云服务器,发现本地ping不通,查看半天才发现,原来是在阿里云上的安全组少了些东西. 在出入方向上新建一个安全组,就可以搞定了.
- centos7mini版安装pyenv,ipython和jupyter环境.2090513
第一节: 搭建centos7下pyenv,ipython,jupyter环境 pyenv:是一个python多版本管理器,在这个里面可以安装多个版本共存,然后可以安装需求选择版本. ipython:就 ...