RestAndroid
基于okhttp3 简单封装的一个网络请求框架。
用法
直接下载源码集成到自己的工程目录下(有时间会上传到jcenter或打包jar包)
配置
请在自己定义的application中进行配置,更详细的网络配置参照 OkHttpClient.Builder
,endPoint
为共用的url块。
1 | public class YourApplication extends Application { |
GET 请求
普通请求1
2
3
4
5
6
7
8
9new RestRequest.Builder()
.urlPath("search/users?q=followers:>10000")
.build()
.enqueue(new DataCallback<Result<List<GitUser>>>() {
@Override
public void onResponse(Result<List<GitUser>> response) {
// TODO refresh your view
}
});
带url参数的请求,如(username=jack&password=123)
此处只是举例,实际运行没对应的api1
2
3
4
5
6
7
8
9
10
11new RestRequest.Builder()
.urlPath("login")
.addUrlParams("username","jack")
.addUrlParams("password","123")
.build()
.enqueue(new DataCallback<Result<List<GitUser>>>() {
@Override
public void onResponse(Result<List<GitUser>> response) {
// TODO refresh your view
}
});
POST 请求
表单提交数据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
26new RestRequest.Builder()
.post(new FormRequestBodyFactory()
.addParam("username","jack")
.addParam("password","123"))
.build()
.enqueue(new DataCallback<String>() {
@Override
public void onPreExecute() {
// show loading dialog
}
@Override
public void onResponse(String response) {
// refresh view
}
@Override
public void onError(CallError error) {
// refresh view
}
@Override
public void onFinish() {
// hide loading dialog
}
});
表单提交文件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
30new RestRequest.Builder()
.post(new FormRequestBodyFactory()
.addFile("file","fileName",new File("")))
.build()
.enqueue(new DataCallback<String>() {
@Override
public void onPreExecute() {
// show loading dialog
}
@Override
public void onProgress(float progress, float length) {
// refresh view
}
@Override
public void onResponse(String response) {
// refresh view
}
@Override
public void onError(CallError error) {
// refresh view
}
@Override
public void onFinish() {
// hide loading dialog
}
});
以json格式传递参数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
29new RestRequest.Builder()
.post(new JsonRequestBodyFactory(jsonObject))
.build()
.enqueue(new DataCallback<String>() {
@Override
public void onPreExecute() {
// show loading dialog
}
@Override
public void onProgress(float progress, float length) {
// refresh view
}
@Override
public void onResponse(String response) {
// refresh view
}
@Override
public void onError(CallError error) {
// refresh view
}
@Override
public void onFinish() {
// hide loading dialog
}
});
自定义参数构造工厂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
32
33
34new RestRequest.Builder()
.post(new RequestBodyFactory() {
@Override
public RequestBody buildRequestBody() {
return null;
}
})
.build()
.enqueue(new DataCallback<String>() {
@Override
public void onPreExecute() {
// show loading dialog
}
@Override
public void onProgress(float progress, float length) {
// refresh view
}
@Override
public void onResponse(String response) {
// refresh view
}
@Override
public void onError(CallError error) {
// refresh view
}
@Override
public void onFinish() {
// hide loading dialog
}
});
callback
目前内部包含DataCallback,FileCallback,可以根据自己的需求去自定义Callback,例如希望回调User对象:
默认使用DataCallback回调,内部以Gosn实现数据转换,如:
1 | new RestRequest.Builder() |
也可自己定义1
2
3
4
5
6
7
8
9
10public abstract class UserCallback extends Callback<User>
{
@Override
public User parseNetworkResponse(Response response) throws IOException
{
String string = response.body().string();
User user = new Gson().fromJson(string, User.class);
return user;
}
}
补充
此框架主要针对参数跟返回数据以及超时设置的一个封装,更多的操作,如cookie,访问拦截,https等参照okhttp使用。
另外具体的图片(建议使用像glide这种比较好的第三方库),https设置等暂时没有添加,有需要的可以自己进一步封装。此框架有参考鸿洋大神的okHttpUtil,特别感谢.
[转发请注明出处,非常感谢]