联网请求操作okhttputils

了解okhttputils之前我们看对文献尽进行了解下:

http://www.open-open.com/lib/view/open1452948374339.html

http://blog.csdn.net/hehe307/article/details/51733709

http://www.cnblogs.com/Coderwei2016/p/6445663.html

对于很多刚出道的程序猿来说,刚开始做项目时联网框架都不知道选哪个好,我们通过上面的链接了解下联网框架,然后我个人再真对最近所做项目中封装的okhttputilsjing进行介绍。

1.添加依赖:

    compile 'com.github.xxl6097:okhttputils:2.4.1'
2.首先初始化okhttputils:

**
 * Created by 李金伟 on 2016/10/25.
 */
public class MyApp extends Application {
    private static final String TAG = "MyApp";
    public static MyApp context;

    private static OkHttpUtils okHttpUtils;

    @Override
    public void onCreate() {
        super.onCreate();
        context = this;// 赋值

        initOkHttp();

    }

    public static Context getContext(){
        return context;
    }

    /**
     * 初始化okhttp
     */
    private static void initOkHttp(){
        okHttpUtils =  OkHttpUtils.getInstance();//获得实例
        okHttpUtils.setConnectTimeout(30, TimeUnit.SECONDS);
        okHttpUtils.setReadTimeout(30, TimeUnit.SECONDS);
        okHttpUtils.setWriteTimeout(30, TimeUnit.SECONDS);

    }

    public static OkHttpUtils getOkHttpUtils() {
        return okHttpUtils;
    }
}
3.封装公共类:

/**
 * Created by Administrator on 2016/8/23.
 */
public class OkHttpUtils {

    /**
     *  post提交文本数据
     * @param url  提交的地址
     * @param dataMap  提交的数据 ,接口字段 key  value 值
     * @param callback  数据回调
     */
    public static void postDataMap(String url , Map<String ,String> dataMap, com.zhy.http.okhttp.callback.Callback callback){
        PostFormBuilder postFormBuilder = MyApp.getOkHttpUtils()
                .post()
                .tag(url)
                .url(url);
        if (dataMap != null){
            for (Map.Entry<String, String> entry : dataMap.entrySet()) {
                postFormBuilder.addParams(entry.getKey(),entry.getValue());//获得:key  value 值 ,也就是接口中的所需字段
            }
        }
        postFormBuilder.build().execute(callback);
    }
}

3.举个接口的例子:

 public static void getOA_SendShare_ContactPeople_List(String user_id, Callback callback) {
        dataMap = new HashMap<>();
        dataMap.put("USER_ID", user_id);
        OkHttpUtils.postDataMap(NetUtils.URL_CONTACT_PEOPLE_LIST, dataMap, callback);//url dataMap  callback
    }

4.url:也就是:NetUtils.URL_CONTACT_PEOPLE_LIST:

  public static String URL_CONTACT_PEOPLE_LIST = BaseUrl + "iosShare/selectShareRange.do";

5.BaseUrl:链接地址中公共的部分:如:
 public static String BaseUrl = "https://www.jh1000.com/"

不过有时候接口中对链接地址返回的不同,比如说是:返回的图片地址,我们所需要的是 https://www.jh1000.com  类型,但是返回来的地址是:https://114.215.40.91 ,这时候我们就不能加载出来图片,因为路径就不对, 那么这时候我们怎么处理呢?

 /**
 * 自定义接口数据返回处理,ios和安卓不一致
 */
public abstract class MyString2Callback extends StringCallback {
    public static String respUrl = "https://114.215.40.91";
    public static String needUrl = "https://www.jh1000.com";
    private static final String TAG = "MyString2Callback";

    public MyString2Callback() {
    }

    @Override
    public String parseNetworkResponse(Response response) throws IOException {
        String res = response.body().string();
        if (res.contains(respUrl)){
            res = res.replace(respUrl,needUrl);
        }
        Log.d(TAG, "parseNetworkResponse() returned: " + res);
        return res;
    }

}
我们通过定义StringCallback ,将返回来的数据地址改为 https://www.jh1000.com 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值