android

来源:互联网 发布:js隐藏元素 编辑:程序博客网 时间:2024/04/29 09:42

需求:

OkHttp的封装,方便使用

  • 添加依赖
    compile 'com.google.code.gson:gson:2.8.2'    compile 'com.squareup.okhttp3:okhttp:3.9.1'    compile 'com.github.bumptech.glide:glide:3.7.0'    compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
  • 网络权限
<!--网络请求--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  • 网络请求的公共参数
&source=android

Okhttp的封装 (.net文件夹中)

public class OkHttpUtils {    private static OkHttpUtils okHttpUtils;    private final OkHttpClient client;    private OkHttpUtils() {        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();        logging.setLevel(HttpLoggingInterceptor.Level.BODY);        client = new OkHttpClient.Builder()                .addInterceptor(new MyInterceptor())                .build();    }    public static OkHttpUtils getOkHttpUtils() {        if (okHttpUtils == null) {            synchronized (OkHttpUtils.class) {                if (okHttpUtils == null) {                    okHttpUtils = new OkHttpUtils();                }            }        }        return okHttpUtils;    }    /**     * GET请求     *     * @param url     * @param callback     */    public void doGet(String url, Callback callback) {        Request request = new Request.Builder().url(url).build();        client.newCall(request).enqueue(callback);    }    /**     * POST请求     *     * @param url     * @param params     * @param callback     */    public void doPost(String url, Map<String, String> params, Callback callback) {        if (params == null) {            throw new RuntimeException("参数为空了");        }        FormBody.Builder builder = new FormBody.Builder();        for (Map.Entry<String, String> entry : params.entrySet()) {            builder.add(entry.getKey(), entry.getValue());        }        Log.e("OkHttpUtils", "请求地址:" + url + " 请求的参数:");        FormBody formBody = builder.build();        Request request = new Request.Builder().url(url).post(formBody).build();        client.newCall(request).enqueue(callback);    }}

URL地址封装

public interface Api {    public static String str1 = "https://www.zhaoapi.cn/product/getProductDetail";    public static String str2 = "https://www.zhaoapi.cn/product/getCarts";

接口封装

public interface OnNetListener<T> {    public void onSuccess(T t);    public void onFailure(Exception e);

公共参数的封装

public class MyInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        Request request = chain.request();        if (request.method().equals("GET")) {            String url = request.url().url().toString();            url += "&source=android";            Request newRequset = request.newBuilder().url(url).build();            return chain.proceed(newRequset);        } else {            FormBody formBody = (FormBody) request.body();            FormBody.Builder builder = new FormBody.Builder();            for (int i = 0; i < formBody.size(); i++) {                builder.add(formBody.name(i), formBody.value(i));            }            builder.add("source", "android");            FormBody newFormBody = builder.build();            Request newRequest = request.newBuilder().url(request.url().url().toString()).post(newFormBody).build();            return chain.proceed(newRequest);        }    }
原创粉丝点击