利用线程池实现Android客户端的http网络数据请求工具类
来源:互联网 发布:女装网络营销策划方案 编辑:程序博客网 时间:2024/06/06 12:52
该工具类值只实现了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 <T> {public void onSuccess(T response);public void onError(T error);}public static void doGet(String url,final HttpCallback<String> callback) {final String _url = url;sExecutorService.submit(new Runnable() {@Overridepublic 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<String>() {@Overridepublic void onSuccess(String respose) {System.out.println("sucess:" + respose);}@Overridepublic void onError(String error) {System.out.println("error:" + error);}}); }}
<pre name="code" class="java"><strong>布局文件:</strong>
<strong></strong><pre name="code" class="html"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button 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" /></RelativeLayout>权限:
<uses-permission android:name="android.permission.INTERNET" />
测试结果:
0 0
- 利用线程池实现Android客户端的http网络数据请求工具类
- 利用线程池实现Android客户端的http网络数据请求工具类
- Android socket通信: 一问一答,一问多答客户端网络请求工具类的实现
- Android常用工具类之Http网络请求的工具类
- Android HTTP网络请求的异步实现
- Android HTTP网络请求的异步实现
- Android HttpUtils网络请求工具类的实现
- Android网络框架xUtils的Http网络数据请求操作
- android客户端利用套接字访问网络调试助手实现一问一答工具类
- 利用android-async-http-1.4.4.jar异步网络请求客户端
- Android 封装http请求的工具类
- Android 封装http请求的工具类
- Android 封装http请求的工具类
- Android 封装http请求的工具类
- Android HttpUtils-Http请求的工具类
- Android-async-http 网络请求框架(工具类)
- android-async-http 异步网络请求客户端请求接口
- Android网络请求利用第三方框架okHttp的工具类
- 设计模式(结构型)之桥接模式(Bridge Pattern)
- 欢迎使用MongoDB数据库
- 如何使用VMware扩大磁盘空间
- iOS自动布局NSAutoLayout
- XML序列化为MODEL、数组
- 利用线程池实现Android客户端的http网络数据请求工具类
- java8之Lambda表达式 1:简介
- 计算运行时间
- 【1】web.xml中的spring的配置
- MFC转化类方法
- Loadrunner 测试API,直接发Post请求(性能测试)
- UIWebView详解
- 在一个数据库里复制一个表结构到多个数据库
- module_init和module_exit .