Android 网络工具类 AsyncHttpClient

Android 网络工具类

代码

废话不多,先上代码:

package com.example.cugxy.vegetationresearch2.Util;

import android.content.Context;

import com.example.cugxy.vegetationresearch2.base.App;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.FileAsyncHttpResponseHandler;
import com.loopj.android.http.PersistentCookieStore;
import com.loopj.android.http.RequestParams;

/**
 * Created by cugxy on 2018/4/12.
 * 网络访问工具类
 */

public class AsyncHttpClientUtil {
    private static final String TAG = "AsyncHttpClientUtil";

    private static final int                CONNECT_TIME = 4 * 1000;
    private static final int                RESPONSE_TIME = 4 * 1000;

    private static final String             SERVER_IP = "*.*.*.*"; // 改成你自己要访问的 ip
    private static final int                SERVER_PORT = *; // 改成你自己的服务器的端口

    private static final String             TEST_SERVER_IP = "192.168.10.167"; // 内网测试 ip

    private static final String             SERVER_HTTP = "http://" + SERVER_IP + ":" + SERVER_PORT;
    private static final String             Test_SERVER_HTTP = "http://" + TEST_SERVER_IP + ":" + SERVER_PORT;

    private static final String             TEST_SERVER = Test_SERVER_HTTP;          //APP接口测试服务器
    private static final String             OFFICIAL_SERVER = SERVER_HTTP;      //APP接口正式服务器

    private static String                   BASE_SERVER = TEST_SERVER;

    private static AsyncHttpClient          mClientGeneral;

    private static PersistentCookieStore    mCookieStore;


    /**
     * 获取静态Client
     *
     */
    public static AsyncHttpClient getClientGeneral() {
        return mClientGeneral;
    }

    /**
     * 设置静态Client
     *
     * @param client 客户端
     */
    public static void setClientGeneral(AsyncHttpClient client) {
        mClientGeneral = client;
        mCookieStore = new PersistentCookieStore(App.context());
        mClientGeneral.setConnectTimeout(CONNECT_TIME);
        mClientGeneral.setResponseTimeout(RESPONSE_TIME);
        mClientGeneral.setCookieStore(mCookieStore);
    }

    /**
     * get方法
     *
     * @param context 上下文
     * @param url     接口地址
     * @param handler 处理
     */
    public static void get(Context context, String url, RequestParams params, AsyncHttpResponseHandler handler) {
        mClientGeneral.get(context, getAbsoluteUrl(url), params, handler);
    }

    /**
     * get方法
     *
     * @param context 上下文
     * @param url     接口绝对地址
     * @param handler 处理
     */
    public static void getAbsolute(Context context, String url, RequestParams params, AsyncHttpResponseHandler handler){
        mClientGeneral.get(context, url, params, handler);
    }

    /**
     * post方法
     *
     * @param context 上下文
     * @param url     接口地址
     * @param params  参数
     * @param handler 处理
     */
    public static void post(Context context, String url, RequestParams params, AsyncHttpResponseHandler handler) {
        mClientGeneral.post(context, getAbsoluteUrl(url), params, handler);
    }

    /**
     * post方法
     *
     * @param context 上下文
     * @param url     接口绝对地址
     * @param params  参数
     * @param handler 处理
     */
    public static void postAbsolute(Context context, String url, RequestParams params, AsyncHttpResponseHandler handler){
        mClientGeneral.post(context, url, params, handler);
    }

    /**
     * 下载文件
     *
     * @param context 上下文
     * @param url     接口地址
     * @param handler 处理
     */
    public static void download(Context context, String url, FileAsyncHttpResponseHandler handler) {
        mClientGeneral.get(context, getAbsoluteUrl(url), handler);
    }

    /**
     * 下载文件
     *
     * @param context 上下文
     * @param url     接口绝对地址
     * @param handler 处理
     */
    public static void downloadAbsolute(Context context, String url, FileAsyncHttpResponseHandler handler) {
        mClientGeneral.get(context, url, handler);
    }

    /**
     * 下载文件
     *
     * @param relativeUrl 接口相对地址
     * @return 绝对地址
     */
    private static String getAbsoluteUrl(String relativeUrl) {
        return BASE_SERVER + relativeUrl;
    }
}

使用

在 自定义 App 中调用:

    /**
     * 初始化全局静态Client
     */
    private void initClient() {
        AsyncHttpClientUtil.setClientGeneral(new AsyncHttpClient());
    }

随后,在要访问地方直接调用静态函数即可。

注意

content 最好使用 app。调用前判断参数,抽取基类,提供不同实现,如 AsyncHttpClient、OKHttp 等。

你可能感兴趣的:(学习)