Mr.Xu
--专注移动互联网
BlogJava
首页
新随笔
联系
聚合
管理
随笔-1 评论-2 文章-0 trackbacks-0
[原创]java回调函数的使用笔记
在java和android开发过程中经常遇到回调函数,一直对回调函数不是很理解,今天自己写了个例子,是为了客户端像服务器发送请求,要知道请求是否发送成功而写的。当你发送一个请求到服务器时,成功发送请求就调用成功的接口,发送请求就调用失败的接口,这些都由服务器进行处理,客户端只需知道成功与否问题。概念的东西就不多说了,直接上代码了。
1、创建回调接口
1
package
pattern;
2
3
/** */
/**
4
*描述:回调接口
5
*
@author
xuzhiwei
6
*/
7
public
interface
ICallBack
{
8
public
void
onSuccess(String content);
9
public
void
onFailure(String errorMsg);
10
}
2、创建调用http请求的类,用于向服务器发送请求,服务器内部进行http请求处理的功能。
1
package
pattern;
2
3
import
java.io.IOException;
4
import
java.net.HttpURLConnection;
5
import
java.net.MalformedURLException;
6
import
java.net.URL;
7
import
java.util.logging.Level;
8
import
java.util.logging.Logger;
9
10
/** */
/**
11
*
12
*
@author
xuzhiwei
13
*/
14
public
abstract
class
Request
{
15
public
void
onSuccess(String resposeBody)
{}
16
public
void
onFailure(String exceptionMsg)
{}
17
18
public
Request()
{}
19
20
public
void
execute(String path)
{
21
try
{
22
URL url
=
new
URL(path);
23
HttpURLConnection conn
=
(HttpURLConnection)url.openConnection();
24
25
conn.setConnectTimeout(
3
*
1000
);
26
conn.setReadTimeout(
2000
);
//返回请求结果
27
int
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
/**响应处理**/
36
public
void
onResponse(
int
code)
{
37
if
(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;
}
public
void
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、创建测试类进行测试
1
package
pattern;
2
/** */
/**
3
*
4
*
@author
xuzhiwei
5
*/
6
public
class
TestCallBack
{
7
8
public
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
15
public
void
onSuccess(String content)
{
16
complete(content);
17
}
18
19
@Override
20
public
void
onFailure(String errorMsg)
{
21
complete(errorMsg);
22
}
23
}
);
24
}
25
26
private
static
void
complete(String msg)
27
{
28
System.out.println(
"
------请求完成---->
"
+
msg);
29
}
30
}
31
以上就是整个回调函数的处理过程了。第一次写blog,请大家多多指教。
posted on 2012-07-27 12:43
じZhìつ偉
阅读(1414)
评论(2)
编辑
收藏
评论:
#
re: [原创]java回调函数的使用笔记 [未登录] 2012-07-27 16:50 |
ゞ沉默是金ゞ
Request should implement ICallBack, correct?
回复
更多评论
#
re: [原创]java回调函数的使用笔记
2012-07-27 17:10 |
じZhìつ偉
@ゞ沉默是金ゞ 也可以实现ICallBack接口。
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
<
2012年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2012年7月 (1)
搜索
最新评论
1. re: [原创]java回调函数的使用笔记
@ゞ沉默是金ゞ 也可以实现ICallBack接口。
--じZhìつ偉
2. re: [原创]java回调函数的使用笔记 [未登录]
Request should implement ICallBack, correct?
--ゞ沉默是金ゞ