- 本项目采用Retrofit+okhttp
- 网络框架接口创建
代码:
1、package com.lsh.latte_core.net;RestService
import java.util.Map;
import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.DELETE;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Part;
import retrofit2.http.QueryMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
/*
* 进行网络请求的接口
* */
public interface RestService {
@GET
Call<String> get(@Url String url,@QueryMap Map<String,Object> params);
@FormUrlEncoded
@POST
Call<String> post(@Url String url, @FieldMap Map<String,Object> params);
@FormUrlEncoded
@PUT
Call<String> put(@Url String url, @FieldMap Map<String,Object> params);
@DELETE
Call<String> delete(@Url String url,@QueryMap Map<String,Object> params);
@Streaming //防止下载文件过大内存溢出 【Tips:要异步】
@GET
Call<ResponseBody> download(@Url String url, @QueryMap Map<String,Object> params);
@Multipart //防止上传文件过大内存溢出 【Tips:要异步】
@GET
Call<ResponseBody> upload(@Url String url, @Part MultipartBody.Part file);
}
2、package com.lsh.latte_core.net;RestCreator
import com.lsh.latte_core.app.ConfigType;
import com.lsh.latte_core.app.Latte;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;
/*
* 使用推荐的单例模式创建方式
* */
public class RestCreator {
public static RestService getRestService(){
return RestServiceHolder.REST_SERVICE;
}
private static final class RetrofitHolder{
private static final String BASE_URL= (String) Latte.getConfigurations().get(ConfigType.API_HOST);
/*建造者模式 创建Retrofit*/
private static final Retrofit RETROFIT_CLINET=new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(OKHttpHolder.OK_HTTP_CLIENT) //添加OKHttpHolder
.addConverterFactory(ScalarsConverterFactory.create())
.build();
}
/*
* 创建OKHttp
* */
private static final class OKHttpHolder{
private static final int TIME_OUT=60;
private static final OkHttpClient OK_HTTP_CLIENT=new OkHttpClient.Builder()
.connectTimeout(TIME_OUT, TimeUnit.SECONDS)
.build();
}
private static final class RestServiceHolder{
private static final RestService REST_SERVICE =
RetrofitHolder.RETROFIT_CLINET.create(RestService.class);
}
}
3、后续优化的网络请求有bug,先不放代码了
-
后更新为Retrofit+Rxjava