随笔-1  评论-2  文章-0  trackbacks-0
     在java和android开发过程中经常遇到回调函数,一直对回调函数不是很理解,今天自己写了个例子,是为了客户端像服务器发送请求,要知道请求是否发送成功而写的。当你发送一个请求到服务器时,成功发送请求就调用成功的接口,发送请求就调用失败的接口,这些都由服务器进行处理,客户端只需知道成功与否问题。概念的东西就不多说了,直接上代码了。

1、创建回调接口

 1package pattern;
 2
 3/**
 4 *描述:回调接口
 5 * @author xuzhiwei
 6 */

 7public interface ICallBack {
 8    public void onSuccess(String content);
 9    public void onFailure(String errorMsg);
10}

 

2、创建调用http请求的类,用于向服务器发送请求,服务器内部进行http请求处理的功能。
1package pattern;
2
3import java.io.IOException;
4import java.net.HttpURLConnection;
5import java.net.MalformedURLException;
6import java.net.URL;
7import java.util.logging.Level;
8import java.util.logging.Logger;
9
10/**
11 *
12 * @author xuzhiwei
13 */

14public abstract class Request {
15public void onSuccess(String resposeBody){}
16public void onFailure(String exceptionMsg){}
17
18public Request(){}
19
20public void execute(String path){
21try {
22 URL url = new URL(path);
23 HttpURLConnection conn = (HttpURLConnection)url.openConnection();
24
25 conn.setConnectTimeout(3*1000);
26 conn.setReadTimeout(2000);
       //返回请求结果
27int responseCode = conn.getResponseCode();
28 onResponse(responseCode);
29 }
catch (MalformedURLException ex) {
30 onFailure(ex.getMessage());
31 }
catch (IOException ex) {
32 onFailure(ex.getMessage());
33 }

34 }

35/**响应处理**/
36public void onResponse(int code){
37if(code == 200){  //状态码:200响应请求成功!调用 onSuccess 方法
38 onSuccess("发送请求成功!");
39 }
else{
40 onFailure("发送请求失败!请求代码:"+code);
41 }

42 }

43
44}

45


3、创建请求控制类
package pattern;

/**
*
*
@author xuzhiwei
*/

public class Ranking {
private String path;

public Ranking(String path){
this.path = path;
}

 
publicvoid list(final ICallBack call) {
  //创建请求实例,请求成功回调成功方法,反之调用失败的接口
Request request
= new Request() {
@Override
public void onSuccess(String resposeBody) {
if (null != call) {
call.onSuccess(resposeBody);
}
else {
onFailure(
"未初始化回调函数");
}

}


@Override
public void onFailure(String exceptionMsg) {
if (null != call) {
call.onFailure(exceptionMsg);
}

}

}
;

request.execute(path);
}

}


4、创建测试类进行测试
1package pattern;
2/**
3 *
4 * @author xuzhiwei
5 */

6public class TestCallBack {
7
8public static void main(String[] args) {
9
10 Ranking ranking = new Ranking("http://localhost/net/index.php");
11
12 ranking.list(new ICallBack() {
13
14 @Override
15public void onSuccess(String content) {
16 complete(content);
17 }

18
19 @Override
20public void onFailure(String errorMsg) {
21 complete(errorMsg);
22 }

23 }
);
24 }

25
26private static void complete(String msg)
27{
28 System.out.println("------请求完成---->"+msg);
29 }

30}

31

以上就是整个回调函数的处理过程了。第一次写blog,请大家多多指教。
posted on 2012-07-27 12:43 じZhìつ偉 阅读(1413) 评论(2)  编辑  收藏

评论:
# re: [原创]java回调函数的使用笔记 [未登录] 2012-07-27 16:50 | ゞ沉默是金ゞ
Request should implement ICallBack, correct?  回复  更多评论
  
# re: [原创]java回调函数的使用笔记 2012-07-27 17:10 | じZhìつ偉
@ゞ沉默是金ゞ 也可以实现ICallBack接口。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: