安卓学习-其他-http网络工具-用了xutils

有个项目当时写的,不是很完善,基本能用

package org.excsoft.g;

import java.lang.reflect.ParameterizedType;

import org.excsoftj.m.Msg;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;

import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class MyRequestCallBack<T>  extends RequestCallBack<T>{
    boolean showFlag=false;
    boolean cancelFlag=false;
    public boolean success=false;
    public Msg returnMsg=new Msg();
    private ProgressDialog pd;
    private Context context;
    private Handler mHandler;
    boolean canCanel=false;
    java.lang.Class cls;
    int delayedTime=500;
    String msg11;
    //private HttpHandler hddd;
    
    
    public MyRequestCallBack(Context context,boolean canCanel,java.lang.Class cls,String msg11){
        super.onStart();
        this.context=context;
        this.canCanel=canCanel;
        this.cls=cls;
        this.msg11=msg11;
    }
    
    public MyRequestCallBack(Context context,boolean canCanel,java.lang.Class cls,String msg11,int delayedTime){
        super.onStart();
        this.context=context;
        this.canCanel=canCanel;
        this.cls=cls;
        this.msg11=msg11;
        this.delayedTime=delayedTime;
    }
    
    public void onStart() {
        showFlag=true;
        cancelFlag=false;
        Message message=new Message();
        message.what=1;
        mHandler=new Handler()
        {
            public void handleMessage(Message msg)
            {
                if(showFlag){
                    pd=ProgressDialog.show(context, "", msg11,true,canCanel);
                    pd.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        public void onCancel(DialogInterface dialog) {
                            cancelFlag=true;
                        }
                    });
                }
                super.handleMessage(msg);
            }
        };
        mHandler.sendMessageDelayed(message,delayedTime);
    }

    public void onSuccess(ResponseInfo<T>  responseInfo) {
        try{
            showFlag=false;
            if(pd!=null){
                    pd.dismiss();
    
            }
            mHandler.removeMessages(1);
            
            if(!cancelFlag){
                final XStream xstream = new XStream(new DomDriver());
                xstream.ignoreUnknownElements();
                xstream.alias("msg", Msg.class);
                xstream.alias("item", cls);
                String res=responseInfo.result+"";
                if(res.indexOf("flag")>0){
                    returnMsg=(Msg)xstream.fromXML(res);
                    if(returnMsg.getFlag().equals("1")){
                        success=true;
                    }else{
                        final String sm=returnMsg.getSm(); 
                           new AlertDialog.Builder(context).setTitle("提示").setMessage(sm).setNegativeButton("确定", null).show();    
                    }
                }else{
                    new AlertDialog.Builder(context).setTitle("失败")
                    .setMessage("原因:网络不可用").setNegativeButton("确定", null).show();    
                }
        
            }
        }catch(Exception e){
            new AlertDialog.Builder(context).setTitle("失败")
            .setMessage("原因:网络不可用").setNegativeButton("确定", null).show();    
        }
    }

//    @Override
//    public void onLoading(long total, long current, boolean isUploading) {
//        super.onLoading(total, current, isUploading);
//        if(cancelFlag&&(hddd!=null)){
//            hddd.stop();
//        }
//    }

    @Override
    public void onFailure(HttpException error, String msg) {
        if(pd!=null){
            pd.dismiss();
        }
        mHandler.removeMessages(1);

        if(!cancelFlag){
            new AlertDialog.Builder(context).setTitle("失败")
            .setMessage("原因:网络不可用").setNegativeButton("确定", null).show();
        }
    }

    
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。