在java和android开发过程中经常遇到回调函数,一直对回调函数不是很理解,今天自己写了个例子,访问网络请求数据的demo。概念的东西就不多说了,直接上代码了。
1、创建回调接口
package pattern;
/**
*
* @author xuzhiwei
*/
public interface ICallBack {
public void onSuccess(String content);
public void onFailure(String errorMsg);
}
2、创建调用http请求的类,进行http请求处理。
package pattern;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author xuzhiwei
*/
public abstract class Request {
public void onSuccess(String resposeBody){}
public void onFailure(String exceptionMsg){}
public Request(){}
public void execute(String path){
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(3*1000);
conn.setReadTimeout(2000);
int responseCode = conn.getResponseCode();
onResponse(responseCode);
} catch (MalformedURLException ex) {
onFailure(ex.getMessage());
} catch (IOException ex) {
onFailure(ex.getMessage());
}
}
public void onResponse(int code){
if(code == 200){
onSuccess("发送请求成功!");
}else{
onFailure("发送请求失败!请求代码:"+code);
}
}
}
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、创建测试类进行测试
package pattern;
/**
*
* @author xuzhiwei
*/
public class TestCallBack {
public static void main(String[] args) {
Ranking ranking = new Ranking("http://localhost/net/index.php");
ranking.list(new ICallBack() {
@Override
public void onSuccess(String content) {
complete(content);
}
@Override
public void onFailure(String errorMsg) {
complete(errorMsg);
}
});
}
private static void complete(String msg)
{
System.out.println("------请求完成---->"+msg);
}
}
5、运行下结果
run:
------请求完成---->发送请求成功!
成功生成(总时间:0 秒)
以上就是整个回调函数的处理过程了。第一次写blog,请大家多多指教。