android开发——okhttp的使用(封装为工具类)

本文介绍了如何在Android开发中使用OkHttp进行网络请求,包括json参数传递、Header和Cookie处理。通过配置Gradle,使用OkhttpUtil、CallbackUtil和RequestUtil工具类,实现了简单的网络请求操作。
摘要由CSDN通过智能技术生成

使用功能强大,可以传参(包括json)、传header信息,Cookie的处理,回调函数处理等。先看下调用的代码:

private static final String CONTENT_TYPE = "application/json; charset=utf-8";
public static void login() {
    HashMap<String, String> headerMap = new HashMap<>();
    HashMap<String, String> paramsMap = new HashMap<>();
    headerMap.put("Content-Type", CONTENT_TYPE);//头部信息
    paramsMap.put("userName", USER_NAME);//参数
    paramsMap.put("password", PASSWORD);
    OkhttpUtil.okHttpPost(loginUrl, paramsMap, headerMap, new CallBackUtil.CallBackDefault() {//回调
        @Override
        public void onFailure(Call call, Exception e) {
            LogUtil.e(TAG, e.getMessage());
            TVAppUtil.showToast("网络异常!请确认是否联网,以及服务器地址是否正确!");
            SharedPreferencesUtil.sharePut("newServerAddress","");
        }

        @Override
        public void onResponse(Response response) {
            try {
                isLogin = true;
                Headers responseHeaders = response.headers();
                String c = responseHeaders.get("Set-Cookie");//cookie的处理
                TVAppUtil.setCookie(c);
                updateReportData();
                HandlerUtil.sendTimingRequest();
            } catch (Exception e) {
                LogUtil.e(TAG, e.getMessage());
                TVAppUtil.showToast("登录异常!");
            } finally {
                try {
                    response.body().close();
                } catch (Exception e) {
                }
            }
        }
    });
}

如果参数是json,则调用:

OkhttpUtil.okHttpPostJson(queryWorkerUrl, jsonStr, headerMap, new CallBackUtil.CallBackString() { 
    @Override
    public void onFailure(Call call, Exception e) {
    }
    @Override
    public void onResponse(String response) {
    }
});

使用的步骤如下:

1、配置gradle

compile 'com.squareup.okhttp3:okhttp:3.2.0'

2、准备好这三个搭配使用的工具类(从别的博客获得的,不知来源了,如有侵权还请告知!):

OkhttpUtil、CallBackUtil<T>、RequestUtil

3、代码如下

package com.sinotcc.www.zhonghuakaoqintv.util;

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


public class OkhttpUtil {


    public static final String METHOD_GET = "GET";

    public static final String METHOD_POST = "POST";

    public static final String METHOD_PUT = "PUT";

    public static final String METHOD_DELETE = "DELETE";


    public static final String FILE_TYPE_FILE = "file/*";

    public static final String FILE_TYPE_IMAGE = "image/*";

    public static final String FILE_TYPE_AUDIO = "audio/*";

    public static final String FILE_TYPE_VIDEO = "video/*";


    /**
     * get请求
     *
     * @param url:url
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpGet(String url, CallBackUtil callBack) {

        okHttpGet(url, null, null, callBack);

    }


    /**
     * get请求,可以传递参数
     *
     * @param url:url
     * @param paramsMap:map集合,封装键值对参数
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpGet(String url, Map<String, String> paramsMap, CallBackUtil callBack) {

        okHttpGet(url, paramsMap, null, callBack);

    }


    /**
     * get请求,可以传递参数
     *
     * @param url:url
     * @param paramsMap:map集合,封装键值对参数
     * @param headerMap:map集合,封装请求头键值对
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpGet(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {

        new RequestUtil(METHOD_GET, url, paramsMap, headerMap, callBack).execute();

    }


    /**
     * post请求
     *
     * @param url:url
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpPost(String url, CallBackUtil callBack) {

        okHttpPost(url, null, callBack);

    }


    /**
     * post请求,可以传递参数
     *
     * @param url:url
     * @param paramsMap:map集合,封装键值对参数
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpPost(String url, Map<String, String> paramsMap, CallBackUtil callBack) {

        okHttpPost(url, paramsMap, null, callBack);

    }


    /**
     * post请求,可以传递参数
     *
     * @param url:url
     * @param paramsMap:map集合,封装键值对参数
     * @param headerMap:map集合,封装请求头键值对
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpPost(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {

        new RequestUtil(METHOD_POST, url, paramsMap, headerMap, callBack).execute();

    }

    /**
     * post请求
     *
     * @param url:url
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpPut(String url, CallBackUtil callBack) {

        okHttpPut(url, null, callBack);

    }


    /**
     * post请求,可以传递参数
     *
     * @param url:url
     * @param paramsMap:map集合,封装键值对参数
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpPut(String url, Map<String, String> paramsMap, CallBackUtil callBack) {

        okHttpPut(url, paramsMap, null, callBack);

    }


    /**
     * post请求,可以传递参数
     *
     * @param url:url
     * @param paramsMap:map集合,封装键值对参数
     * @param headerMap:map集合,封装请求头键值对
     * @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。
     */

    public static void okHttpPut(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {

        new RequestUtil(METHOD_PUT, url, paramsMap, headerMap, callBack).execute();

    }

    /**
     * post请求
     *
     * @param 
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值