Android xutil3网络模块二次封装

在Android开发过程中,难免有网络请求,通常的在子线程中请求网络,在主线程中更新UI,这样的话比较麻烦,国内大神写了好多框架,其中最常见的就是xutil了,在开发过程中,需要实现它的网络请求部分的回调函数的好几个方法,这样显得代码有点乱,于是乎,我就想对他进行封装了。其实我是按照开发网站的思想进行封装的,做个网站的都知道,MVC思想很重要,特别是在ssh或ssm框架中较为明显,所以我就按照这个思路进行封装了,下面来看看代码吧

BaseDao.java

package com.example.dao.base;

import java.util.Map;

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

import android.app.Application;
import android.content.Context;

/**
 * 二次封装xutil3
 * @author double江
 *
 */
public class BaseDao{
    private Context context;
    public  void BasDao(Context context){
        this.context=context;
        x.Ext.init((Application) context);
    }
    /**
     * 发送get请求
     * @param <T>
     */
    public  <T> Cancelable Get(String url,Map<String,String> map,CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        if(null!=map){
            for(Map.Entry<String, String> entry : map.entrySet()){
                params.addQueryStringParameter(entry.getKey(), entry.getValue());
            }
        }
        Cancelable cancelable = x.http().get(params, callback);

        return cancelable;
    }

    /**
     * 发送post请求
     * @param <T>
     */
    public  <T> Cancelable Post(String url,Map<String,Object> map,CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        if(null!=map){
            for(Map.Entry<String, Object> entry : map.entrySet()){
                params.addParameter(entry.getKey(), entry.getValue());
            }
        }
        Cancelable cancelable = x.http().get(params, callback);
        return cancelable;
    }


    /**
     * 上传文件
     * @param <T>
     */
    public  <T> Cancelable UpLoadFile(String url,Map<String,Object> map,CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        if(null!=map){
            for(Map.Entry<String, Object> entry : map.entrySet()){
                params.addParameter(entry.getKey(), entry.getValue());
            }
        }
        params.setMultipart(true);
        Cancelable cancelable = x.http().get(params, callback);
        return cancelable;
    }

    /**
     * 下载文件
     * @param <T>
     */
    public  <T> Cancelable DownLoadFile(String url,String filepath,CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        //设置断点续传
        params.setAutoResume(true);
        params.setSaveFilePath(filepath);
        Cancelable cancelable = x.http().get(params, callback);
        return cancelable;
    }
}

在activity中
测试一个方法

“`
private void getxml() {
String url=”http://flash.weather.com.cn/wmaps/xml/china.xml”;

    BasDao.Get(url, null, new CallbackDao<String>(){
        @Override
        public void onSuccess(String xmlString) {
            super.onSuccess(xmlString);
            try{
                XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
                XmlPullParser xmlPullParser = factory.newPullParser();  
                xmlPullParser.setInput(new StringReader(xmlString));  
                int eventType = xmlPullParser.getEventType();  
                while (eventType != XmlPullParser.END_DOCUMENT) {  
                    switch (eventType) {  
                    case XmlPullParser.START_TAG:  
                        String nodeName = xmlPullParser.getName();  
                        if ("city".equals(nodeName)) {  
                            String pName = xmlPullParser.getAttributeValue(0);  
                            Log.e("TAG", "city is " + pName);  
                        }  
                        break;  
                    }  
                    eventType = xmlPullParser.next();  
                }  
            }catch(Exception e){
                e.printStackTrace();
            }       
        }
        });
    }

“`这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值