网络请求Retrofit工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengyeNom1/article/details/86677337

项目中常常会用到网络请求的工具类,大多数其实都是可以自定义的,如果嫌麻烦的话,也可以直接使用我的,如有错误还请见谅!

/**
 * Retrofit工具类
 * Created by mazhanzhu on 2019/1/28.
 */
public class RetrofitUtils {
    /**
     * 缓存文件
     */
    private static final String RESPONSE_CACHE_FILE = "responseCache";
    /**
     * 缓存大小
     */
    private static final long RESPONSE_CACHE_SIZE = 10 * 1024 * 1024L;
    /**
     * 连接超时时间
     */
    private static final long HTTP_CONNECT_TIMEOUT = 10L;
    /**
     * 读取超时时间
     */
    private static final long HTTP_READ_TIMEOUT = 30L;
    /**
     * 写入超时时间
     */
    private static final long HTTP_WRITE_TIMEOUT = 10L;
    private static SimpleArrayMap<String, List<Cookie>> map = new SimpleArrayMap<>();
    private static String baseUrl;
    private static NetInterface mPortraitService;

    public static NetInterface getUrls() {

        //-----------------------------------配置网络请求日志-----------------------------------------------------------
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {

            @Override
            public void log(String message) {
                //完整的日志打印标识
                Log.e("=====log======", message);
            }
        });
        //日志打印的最高级别,可以输出所有的请求返回的信息包括各种请求格式!
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        //-----------------------------------配置网络请求日志------------------------------------------------------------

        //-----------------------------------配置网络请求参数------------------------------------------------------------
        File cacheFile = new File(JLApp.getContext().getCacheDir(), RESPONSE_CACHE_FILE);
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE);
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                .cache(new Cache(cacheFile, RESPONSE_CACHE_SIZE))
                .connectTimeout(HTTP_CONNECT_TIMEOUT, TimeUnit.SECONDS)
                .writeTimeout(HTTP_WRITE_TIMEOUT, TimeUnit.SECONDS)
                .readTimeout(HTTP_READ_TIMEOUT, TimeUnit.SECONDS)
                .cookieJar(new CookieJar() {
                    @Override
                    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
                        map.put(url.toString(), cookies);
                    }

                    @Override
                    public List<Cookie> loadForRequest(HttpUrl url) {
                        List<Cookie> cookies = map.get(url.toString());
                        return cookies != null ? cookies : new ArrayList<Cookie>();
                    }
                })
                .addInterceptor(loggingInterceptor)
                .addInterceptor(logging);
        OkHttpClient client = builder.build();
        //-----------------------------------配置网络请求参数------------------------------------------------------------

        //-----------------------------------配置Retrofit----------------------------------------------------------------
        //BaseUrl 一般网络请求地址里面,总会有一样得前缀,就像是            
        //http://192.168.20.241:11008****这就是那个基地址,基地址+NetInterface类里面的
        //post()的地址就是一个完整的网络请求地址,这点要注意
        baseUrl = "http://192.168.20.241:11008/";
        Retrofit mRetrofit = new Retrofit.Builder()
                //添加网络请求的基地址
                .baseUrl(baseUrl)
                //增加返回值为String的支持
                .addConverterFactory(ScalarsConverterFactory.create())
                //添加转换工厂,用于解析json并转化为javaBean
                .addConverterFactory(GsonConverterFactory.create())
                //设置参数
                //.client(DataLayer.getClient())
                .client(client)
                .build();
        //NetInterface为接口定义类
        mPortraitService = mRetrofit.create(NetInterface.class);
        return mPortraitService;
        //-----------------------------------配置Retrofit----------------------------------------------------------------
    }
}

 这是NetInterface类,就是retrofit的辅助接口类

/**
 * Created by mazhanzhu on 2019/1/28.
 */
public interface NetInterface {
     /**
     * 车辆核查历史
     */
    @POST("/InfoCheck_Srv_esb/oc")
    @FormUrlEncoded
    Call<String> getCheckCarHistroy(@FieldMap Map<String, String> map);
}

在需要的网络请求的地方这样写

Map<String, String> map = new HashMap<String, String>();
map.put("CPH", car_num);
map.put("staffCode", Hawk.get(Constant.STAFF_ID) + "");
map.put("PAGENUM", page + "");
//合起来之后完整的网络请求地址就是   http://192.168.20.241:11008/InfoCheck_Srv_esb/oc
RetrofitUtils_Ma.getUrls().getCheckCarHistroy(map).enqueue(new Callback<String>() {
     @Override
     public void onResponse(Call<String> call, Response<String> response) {

     }

     @Override
     public void onFailure(Call<String> call, Throwable t) {

     }
});

搞定! 

猜你喜欢

转载自blog.csdn.net/fengyeNom1/article/details/86677337