该工具类值只实现了HTTP的get方法,参考get方法可轻松实现post、put、delete等方法,下面是get方法的实现

public class SimpleHttpClient {

private static final String TAG = SimpleHttpClient.class.getSimpleName();

public static int POOL_SIZE = 8;

private static ExecutorService sExecutorService;

private static int READ_TIME_OUT = 10 * 1000;

private static int CONNECTE_TIME_OUT = 10 * 1000;

private static final String ENCODE = "UTF-8";

static {

sExecutorService = Executors.newFixedThreadPool(POOL_SIZE);

}

public interface HttpCallback {

public void onSuccess(T response);

public void onError(T error);

}

public static void doGet(String url,final HttpCallback callback) {

final String _url = url;

sExecutorService.submit(new Runnable() {

@Override

public void run() {

URL url = null;

try {

url = new URL(_url);

} catch (MalformedURLException e) {

e.printStackTrace();

callback.onError(e.getMessage());

return;

}

BufferedReader bufferedReader = null;

StringBuffer response = new StringBuffer();

HttpURLConnection urlConnection = null;

try {

urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setDoInput(true);

urlConnection.setReadTimeout(READ_TIME_OUT);

urlConnection.setConnectTimeout(CONNECTE_TIME_OUT);

urlConnection.setRequestMethod("GET");

urlConnection.setUseCaches(false);

urlConnection.setRequestProperty("connection", "close");

urlConnection.connect();

int code = urlConnection.getResponseCode();

if (code >= 200 && code < 400) {

bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),ENCODE));

String line = null;

while ((line = bufferedReader.readLine()) != null) {

response.append(line);

}

callback.onSuccess(response.toString());

} else {

bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getErrorStream(),ENCODE));

String line = null;

while ((line = bufferedReader.readLine()) != null) {

response.append(line);

}

callback.onError(response.toString());

}

}catch (SocketTimeoutException e) {

e.printStackTrace();

callback.onError(e.getMessage());

} catch (IOException e) {

e.printStackTrace();

callback.onError(e.getMessage());

} finally {

if (bufferedReader != null) {

try {

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

});

}

}

测试:

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void test(View view) {

String url = "http://www.weather.com.cn/adat/sk/101010100.html";

SimpleHttpClient.doGet(url, new HttpCallback() {

@Override

public void onSuccess(String respose) {

System.out.println("sucess:" + respose);

}

@Override

public void onError(String error) {

System.out.println("error:" + error);

}

});

}

}

布局文件:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.httpdemos.MainActivity" >

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/textView1"

android:layout_marginTop="132dp"

android:layout_toRightOf="@+id/textView1"

android:onClick="test"

android:text="Button" />

权限:

测试结果:

android网络请求线程池,利用线程池实现Android客户端的http网络数据请求工具类相关推荐

  1. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解

    java代码实现访问网络外部接口并获取数据的工具类 工具类代码,可以直接copy使用 package com.yqzj.util; import org.apache.log4j.LogManager ...

  2. 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 缓存策略 | LruCache 内存缓存 | LruCache 常用操作 | 工具类代码 )

    文章目录 一.Bitmap 内存缓存策略 二.LruCache 内存缓存 三.LruCache 常用操作 四.LruCache 工具类 五.源码及资源下载 官方参考 : Google 官方提供的 内存 ...

  3. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

    jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...

  4. android表白app源码,利用phonegap和原生Android,制作七夕表白神器(附Android源码)...

    最近闲来无事,偶然从最代码(http://www.zuidaima.com/)找到一个应景(七夕)的html5页面特效,看了一看,觉得尽管在PC上效果挺好的,但是如果把这个东西放到手机上,单身程序员找 ...

  5. android list 替换元素_Java 集合(二)——Set 集合、List 集合和 Collections 工具类...

    一.前言 在 Java 集合(一)中我们已经讲了 Collection 集合接口.Iterator 迭代器和泛型,今天我们来讲 Set 集合.List 集合 和 Collections 工具类. 二. ...

  6. 国密算法java语言的实现:利用bcprov和hutool库分别实现国密SM4算法工具类,对称密钥

    SM4算法成为行业标准: SM4分组密码算法是2012年3月21日实施的一项行业标准: 2021年6月25日,我国SM4分组密码算法作为国际标准ISO/IEC 18033-3:2010/AMD1:20 ...

  7. java多线程提交,如何按照时间顺序获取线程结果,看完你就懂了 | Java工具类

    目录 前言 Maven依赖 代码 总结 前言 在工作中是否存在这样的场景,多个线程提交执行,你不想全部线程执行结束了获取结果,而是有线程完成返回结果就获取消费.本文提供该场景的工具类,可以直接用哦. ...

  8. JDBC 数据库连接池(JDBCUtils工具类)

    文章目录 前言 一.JDBC作用? 二.获取数据的连接方式 三.Statement/PreStatement执行sql 四.ResultSet结果集 五.JDBC相关API 六.事务 七.批处理 八. ...

  9. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

最新文章

  1. NAR:UNITE真菌鉴定ITS数据库——处理未分类和并行分类(数据库文章阅读笔记Markdown模板)...
  2. php程序员可能不了解的编程细节
  3. Vmware 中安装Unix
  4. container 的背后
  5. c语言实现函数给主函数中的指针赋值的方法
  6. ubuntu18.04 安装Teamviewer15出现依赖库出错
  7. 学习用TypeScript写React组件
  8. 360补丁打上以后漏洞依然存在?
  9. c语言程序设计2试卷答案,《C语言程序设计》试卷2参考答案.doc
  10. python开发安卓盒子_Python盒子:模块、包和程序
  11. 安装系统显示sql服务器未安装,win7系统安装SQLServer2005提示“SQL Server服务无法启动”的解决方法...
  12. TensorFlow激励函数
  13. android指纹测试,Android指纹识别
  14. delete操作对UNDO表空间容量的冲击
  15. 淘宝奇门对接(淘宝订单加密改造)
  16. 软件测试怎么自学?史上最全的「软件测试」自学路线图+资源包
  17. 7E3 Banding
  18. oracle归档日志百分比,oracle归档日志过满清理
  19. 利用Joypy绘制嵴线图的案例
  20. Gauss quadrature approximation by Lanczos algorithm

热门文章

  1. maven中的module及聚合项目
  2. springboot整合elasticjob
  3. 那些年我们追过的计算机经典书
  4. 理解Monad,一份monad的解惑指南
  5. Nginx + IIS实现负载均衡 Session多站点共享
  6. pt-heartbeat 监测RDS延迟
  7. PostgreSQL SQL OUTLINE插件sr_plan (保存、篡改、固定 执行计划)
  8. dnn学习:数据访问(1)
  9. Struts2 过滤器与拦截器
  10. Spring Cloud Eureka 属性配置中文说明文档