android怎么用okhttp封装网络框架
1个回答
2016-04-28 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
封装只是为了能更加简单,仅此而已~
功能
UI 线程切换
可选择的Callback(任意选择UI线程或者子线程)
参数规范化,GET与POST都一样的传参方式
上传/下载进度回调
可以简单的设置Head部分
可以每次请求时自动加上需要的参数
String/JSON/byte/File… 都能一样简单
用法
由于辅助代码较多,在这里就不一一贴出来了,在这里仅仅演示如何使用。
异步GET
Http.getAsync("http://wthrcdn.etouch.cn/weather_mini", new UiCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getAsync:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getAsync:onSuccess:" + response);
}
}, new StrParam("citykey", 101010100)
);123456789101112
由于是 get 请求,在这里参数中的 citykey 会被自动解析到 url 中。
http://wthrcdn.etouch.cn/weather_mini?citykey=1010101001
同步GET
final String url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101010100";
String str = Http.getSync(String.class, url);
log("getSync1:" + str);
str = Http.getSync(url, new ThreadCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getSync2:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getSync2:onSuccess:" + response);
}
});
log("getSync2:" + str);12345678910111213141516
同步方式支持两种情况,一种有Callback,一种是没有。
当然就算加上了Callback也并不是异步,此时方法会等到执行完成后才会继续往下走。之所以这么干,是为了方便在callback中直接处理ui的事儿。
在这里有必要说明一下,返回类型需要进行指定,如果没有Callback哪么需要你传入返回类型class。
当然如果你传入了callback,哪么此时class就由callback
Account account = Http.getSync(Account.class, url);
User user = Http.getSync(User.class, url);
String str = Http.getSync(String.class, url, new StrParam("citykey", 101010100));123
Callback 的情况也如上所示。
异步与同步的区别在于方法名称:
Http.getSync()
Http.getAsync()
Http.postSync()
Http.postAsync()
Http.uploadSync()
Http.uploadAsync()
Http.downloadSync()
Http.downloadAsync()
默认情况下,upload与download具有callProgress 回调进度功能。
POST
String value1 = "xxx";
String value2 = "xxx";
String url = "http://www.baidu.com";
Http.postAsync(url, new HttpCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
}
@Override
public void onSuccess(String response, int code) {
log(response);
}
},
new StrParam("value1", value1),
new StrParam("value2", value2));1234567891011121314151617
post 的请求方法与get基本如出一辙。
Upload
File file = getAssetsFile();
Http.uploadAsync("http://img.hoop8.com/upload.php", "uploadimg", file, new UiCallback<String>() {
@Override
public void onProgress(long current, long count) {
super.onProgress(current, count);
log("uploadAsync onProgress:" + current + "/" + count);
mUpload.setProgress((int) ((current * 100.00 / count)));
}
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
log("uploadAsync onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("uploadAsync onSuccess:" + response);
}
});1234567891011121314151617181920
上传部分也很简单,如果需要带有参数哪么和Post的使用方式一样。当然此时传入参数就不是 StrParam 而是 IOParam.
上传的时候你可以仅仅传递文件+文件对应的name;或者 传递 IOParam; 也可以 StrParam+IOParam的方式;当然终极一点你可以传递:Param 类型。
功能
UI 线程切换
可选择的Callback(任意选择UI线程或者子线程)
参数规范化,GET与POST都一样的传参方式
上传/下载进度回调
可以简单的设置Head部分
可以每次请求时自动加上需要的参数
String/JSON/byte/File… 都能一样简单
用法
由于辅助代码较多,在这里就不一一贴出来了,在这里仅仅演示如何使用。
异步GET
Http.getAsync("http://wthrcdn.etouch.cn/weather_mini", new UiCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getAsync:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getAsync:onSuccess:" + response);
}
}, new StrParam("citykey", 101010100)
);123456789101112
由于是 get 请求,在这里参数中的 citykey 会被自动解析到 url 中。
http://wthrcdn.etouch.cn/weather_mini?citykey=1010101001
同步GET
final String url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101010100";
String str = Http.getSync(String.class, url);
log("getSync1:" + str);
str = Http.getSync(url, new ThreadCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
log("getSync2:onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("getSync2:onSuccess:" + response);
}
});
log("getSync2:" + str);12345678910111213141516
同步方式支持两种情况,一种有Callback,一种是没有。
当然就算加上了Callback也并不是异步,此时方法会等到执行完成后才会继续往下走。之所以这么干,是为了方便在callback中直接处理ui的事儿。
在这里有必要说明一下,返回类型需要进行指定,如果没有Callback哪么需要你传入返回类型class。
当然如果你传入了callback,哪么此时class就由callback
Account account = Http.getSync(Account.class, url);
User user = Http.getSync(User.class, url);
String str = Http.getSync(String.class, url, new StrParam("citykey", 101010100));123
Callback 的情况也如上所示。
异步与同步的区别在于方法名称:
Http.getSync()
Http.getAsync()
Http.postSync()
Http.postAsync()
Http.uploadSync()
Http.uploadAsync()
Http.downloadSync()
Http.downloadAsync()
默认情况下,upload与download具有callProgress 回调进度功能。
POST
String value1 = "xxx";
String value2 = "xxx";
String url = "http://www.baidu.com";
Http.postAsync(url, new HttpCallback<String>() {
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
}
@Override
public void onSuccess(String response, int code) {
log(response);
}
},
new StrParam("value1", value1),
new StrParam("value2", value2));1234567891011121314151617
post 的请求方法与get基本如出一辙。
Upload
File file = getAssetsFile();
Http.uploadAsync("http://img.hoop8.com/upload.php", "uploadimg", file, new UiCallback<String>() {
@Override
public void onProgress(long current, long count) {
super.onProgress(current, count);
log("uploadAsync onProgress:" + current + "/" + count);
mUpload.setProgress((int) ((current * 100.00 / count)));
}
@Override
public void onFailure(Request request, Response response, Exception e) {
e.printStackTrace();
log("uploadAsync onFailed");
}
@Override
public void onSuccess(String response, int code) {
log("uploadAsync onSuccess:" + response);
}
});1234567891011121314151617181920
上传部分也很简单,如果需要带有参数哪么和Post的使用方式一样。当然此时传入参数就不是 StrParam 而是 IOParam.
上传的时候你可以仅仅传递文件+文件对应的name;或者 传递 IOParam; 也可以 StrParam+IOParam的方式;当然终极一点你可以传递:Param 类型。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询