Android xUtils3网络框架

package com.clound.battery.http;

import android.nfc.Tag;
import android.util.Log;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.io.File;
import java.util.Map;

/**
 * author cowards
 * created on 2018\12\8 0008
 **/
public class XUtilsManager {

    private static volatile XUtilsManager instance = null;

    public XUtilsManager() {
    }

    public static XUtilsManager getInstance() {
        if (instance == null) {
            synchronized (XUtilsManager.class) {
                if (instance == null) {
                    instance = new XUtilsManager();
                }
            }
        }
        return instance;
    }

    /**
     * Xutils  GET异步请求
     *
     * @param what         标签
     * @param httpCallBack
     * @param httpUrl      接口地址
     */
    public void getAsynHttp(final int what, final HttpCallBack httpCallBack, final String httpUrl) {
        RequestParams params = new RequestParams(httpUrl);
        params.setCacheMaxAge(1000 * 10);
        x.http().get(params, new Callback.CacheCallback<String>() {
            @Override
            public boolean onCache(String result) {
                return true;
            }

            @Override
            public void onSuccess(String result) {
                //如果服务返回304或onCache选择了信任缓存,这时result为null
                if (result != null) {
                    httpCallBack.onResponse(what, result);
                }
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                httpCallBack.onFailure(what, ex.getMessage());
            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }

    /**
     * Xutils  POST异步请求
     *
     * @param what         标签
     * @param httpCallBack
     * @param httpUrl      接口地址
     * @param map          以key-value形式上传参数
     */
    public void postAsynHttp(final int what, final HttpCallBack httpCallBack, final String httpUrl, Map<String, String> map) {
        RequestParams params = new RequestParams(httpUrl);
        for (String key : map.keySet()) {
            params.addBodyParameter(key, map.get(key));
        }
        params.setCacheMaxAge(1000 * 10);
        x.http().post(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                //解析result
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
            }

            @Override
            public void onCancelled(CancelledException cex) {
            }

            @Override
            public void onFinished() {
            }
        });
    }

    /**
     * 上传文件
     *
     * @param what         标签
     * @param httpCallBack
     * @param filePath     上传的本地文件路径
     * @param httpUrl      接口地址
     */
    public void uplodeFile(final int what, final HttpCallBack httpCallBack, String filePath, String httpUrl) {
        RequestParams params = new RequestParams(httpUrl);
        params.setMultipart(true);
        params.addBodyParameter("file", new File(filePath));
        x.http().post(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                httpCallBack.onResponse(what, result);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                httpCallBack.onFailure(what, ex.getMessage());
            }

            @Override
            public void onCancelled(CancelledException cex) {
            }

            @Override
            public void onFinished() {
            }
        });
    }

    /**
     * 下载文件
     *
     * @param what         标签
     * @param httpCallBack
     * @param filePath     下载到的本地文件路径
     * @param httpUrl      文件网络地址
     */
    public void getDownLoad(final int what, final HttpCallBack httpCallBack, String filePath, String httpUrl) {
        RequestParams params = new RequestParams(httpUrl);
        params.setSaveFilePath(filePath);
        params.setAutoRename(false);//自动为文件命名
        params.setAutoResume(true);//自动断点续传
        x.http().get(params, new Callback.ProgressCallback<File>() {
            @Override
            public void onSuccess(File result) {
                httpCallBack.onResponse(what, result.getAbsolutePath());
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                httpCallBack.onFailure(what, ex.getMessage());
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Log.e(XUtilsManager.class.getSimpleName(), "取消下载...");
            }

            @Override
            public void onFinished() {
                Log.e(XUtilsManager.class.getSimpleName(), "下载结束...");
            }

            //网络请求之前回调
            @Override
            public void onWaiting() {
                Log.e(XUtilsManager.class.getSimpleName(), "下载等待中...");
            }

            //网络请求开始的时候回调
            @Override
            public void onStarted() {
                Log.e(XUtilsManager.class.getSimpleName(), "开始下载...");
            }

            //下载的时候不断回调的方法
            @Override
            public void onLoading(long total, long current, boolean isDownloading) {
                //当前进度和文件总大小
                Log.e(XUtilsManager.class.getSimpleName(), "current:" + current + ",total:" + total);
            }
        });
    }

    public interface HttpCallBack {

        /**
         * 访问成功回调接口
         */
        void onResponse(int what, String response);

        /**
         * 访问成错误回调接口
         */
        void onFailure(int what, String error);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落魄的Android开发

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值