1.android开发AsyncTask异步发送HTTP请求 2.接口与抽象类
来源:互联网 发布:mongodb 数据导出 编辑:程序博客网 时间:2024/06/15 21:06
在安卓中发送HTTP请求毫无疑问需要使用异步请求,也就是说还需要再开一个线程,JAVA中封装了两种多线程的方法:
方法一: 集成Thread类
方法二: 实现Runnable接口
在android 中通常使用android封装好的类AsyncTask
下面是封装好了的代码:
HttpTask.java:
import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import android.os.AsyncTask;//使用时只需要重写success()和faild()这两个函数即可public abstract class HttpTask extends AsyncTask<String, String, Boolean> implements SuccessFaild{ private String response; @Override protected Boolean doInBackground(String... params) { // TODO Auto-generated method stub //第一步:创建HttpClient对象 HttpClient httpCient = new DefaultHttpClient(); //第二步:创建代表请求的对象,参数是访问的服务器地址 HttpGet httpGet = new HttpGet(params[0]); try { //第三步:执行请求,获取服务器发还的相应对象 HttpResponse httpResponse = httpCient.execute(httpGet); //第四步:检查相应的状态是否正常:检查状态码的值是200表示正常 if (httpResponse.getStatusLine().getStatusCode() == 200) { //第五步:从相应对象当中取出数据,放到entity当中 HttpEntity entity = httpResponse.getEntity(); response = EntityUtils.toString(entity,"utf-8");//将entity当中的数据转换为字符串 return true; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return false; } @Override protected void onPostExecute(final Boolean success) { if(success){ //请求成功,response是收到的json串 success(); } else{//请求失败 faild(); } } @Override protected void onCancelled() { //task = null; } public String getResponse() { return response; } public void setResponse(String response) { this.response = response; }}interface SuccessFaild{ void success(); void faild();}
以上代码不要修改(开闭原则)
下面是使用HttpTask类发送Http请求的示例代码:
@Override public void onClick(View arg0) { new HttpTask(){ //发送Http请求成功,执行success函数,失败则执行faild函数 @Override public void success() { //super.getResponse()用于获取收到的响应内容 System.out.println(super.getResponse()); // TODO Auto-generated method stub } @Override public void faild() { // TODO Auto-generated method stub } }.execute("http://www.baidu.com"); //请求地址 // TODO Auto-generated method stub }
2接口与抽象类
2.1被abstract修饰的类有两种情况
1.类ClassA中包含abstract修饰的方法FunB
2.类ClassA实现了接口InterfaceC,但是却没有全部实现C中定义的方法,此时ClassA也必须用abstract修饰
2.2关于神奇的@Override…今天终于弄明白了
有些类我们需要重写一些方法后才能使用比如下面这样:
我们一点这个蓝色的Add unimplemented methods编辑器就自动给我们添加上”unimplemented methods”(没有实现的方法),而且还会加上@Override标记(当然Override可以不加,只是会起到一个提示作用)
2.3抽象类中的非抽象方法中可以调用抽象方法(abstract)或者接口中未实现的方法。
比如在HttpTask.java中,我们在onPostExecute方法里调用了success()方法和faild方法,但是success在HttpTask类中没有实现。
在success方法实现之前,onPostExecute方法也没有意义,但是在success方法实现后,onPostExecute调用的是实现了的success方法,这时onPostExecute才有意义
阅读全文
0 0
- 1.android开发AsyncTask异步发送HTTP请求 2.接口与抽象类
- 异步发送HTTP请求
- Android开发 HTTP 发送 Post 与 Get 请求
- android-async-http 异步网络请求客户端请求接口
- Android开发全程记录(十六)——android调用接口发送http请求缓存处理
- NSURLConnection异步发送HTTP请求
- Spring异步发送http请求
- JAVA发送http请求,调用http接口与方法
- Android开发 AsyncTask异步任务类
- Android开发 AsyncTask异步任务类
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口 .
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- 搭建商城小程序
- 【百度运营部】面试记录
- jmeter的response乱码问题解决
- KETTLE java.lang.OutOfMemoryError: Java heap space 内存溢出错误
- 事件的分发和消费机制详解
- 1.android开发AsyncTask异步发送HTTP请求 2.接口与抽象类
- Lua 5.3 源码分析(四)线程 lua_State
- Tomcat出现中文乱码问题
- 强叔侃墙_出口选路_策略路由_基于源IP地址的策略路由
- occ
- 汉化版svn安装包和英文对比
- hdu4871 Shortest-path tree
- 服务端开发常用技术
- 初学Json