/network

基于OkHttp的网络框架

Primary LanguageJava

network

基于OkHttp3网络框架

Platform

mavenCentral迁移指南

依赖导入

项目根目录

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

模块目录

dependencies {
	implementation 'com.github.lavalike:network:0.0.1'
}

自定义全局配置

如未初始化,网络请求请写明全路径

Network.init(NetConfig.Builder().build());

NetConfig支持方法

public static class Builder {
    public Builder baseUrl(String baseUrl);
    public Builder netInterceptor(Interceptor interceptor);�
    public Builder interceptor(Interceptor interceptor);
    public CookieJar cookieJar;
    public Builder retryOnConnectionFailure(boolean retry);
    public Builder connectTimeout(long connectTimeout);
    public Builder readTimeout(long readTimeout);
    public Builder writeTimeout(long writeTimeout);
    public Builder debug(boolean debug);
    public NetConfig build();
}

请求类型

类型 继承关系
GET GetTask
POST_JSON PostJsonTask
POST_FORM PostFormTask
UPLOAD UploadTask

网络请求Task支持方法

public interface Task {
    void onSetupParams(Object... params);
    String getApi();
    Task put(String key, Object value);
    Task putFile(String key, String filePath);
    Task addHeader(String name, String value);
    Task setTag(Object tag);
    Task setLoadingPage(LoadingPage page);
    Call exe(Object... params);
    Call retry();
}

发起请求

1、使用可变参数形式请求

new TestTask(new LoadingCallback<EntityType>() {
    @Override
    public void onSuccess(EntityType data) {
        
    }
}).exe("abc", 1, true);

重写onSetupParams方法手动处理参数

public class TestTask extends GetTask {
    public <EntityType> TestTask(RequestCallback<EntityType> callback) {
        super(callback);
    }

    @Override
    public void onSetupParams(Object... params) {
        put("param1", params[0]);
        put("param2", params[1]);
        put("param3", params[2]);
    }

    @Override
    public String getApi() {
        return "your api address";
    }
}

2、链式传递参数

new TestTask(new ProgressCallback<String>() {
	@Override
	public void onSuccess(String data) {

	}

	@Override
	public void onProgress(int progress) {

	}
}).setTag(this)
	.put("token", token)
	.putFile("sourceFile", "file url")
	.addHeader("","")
	.exe();

无需重写onSetupParams方法

设置加载页

setLoadingPage(LoadingPage page)

注意
1、page为null无效
2、page构造参数为null无效

1、使用默认加载页 DefaultLoadingPage

new TestTask(new LoadingCallback<String>() {
    @Override
    public void onSuccess(String data) {
    
    }
}).setLoadingPage(new DefaultLoadingPage(recycler)).exe();

2、LoadingPage自定义成功延迟回调与加载时长

new DefaultLoadingPage(recycler).setDelay(3000).setDuration(2000)

3、自定义加载页

继承 AbsLoadingPage 并处理对应逻辑,如有疑问请参照 DefaultLoadingPage

错误输出

初始化配置时,debug 默认为 false,输出较为友好的统一提示,配置为 true 可输出具体错误信息

Network.init(new NetConfig.Builder()
        .debug(true)
        .build());