安卓学习-其他-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();
        }
    }

}
时间: 2024-11-03 21:23:24

安卓学习-其他-http网络工具-用了xutils的相关文章

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

Android应用开发:网络工具——Volley(一)

引言 网络一直是我个人的盲点,前一阵子抽出时间学习了一下Volley网络工具的使用方法,也透过源码进行了进一步的学习,有一些心得想分享出来.在Android开发中,成熟的网络工具不少,Android自带了HttpClient,还有okhttp,还有koush大神创建的ion开源项目,然后就是google后来加入到Android项目源码中的Volley.为什么使用Volley,是因为Volley使用简单,逻辑清晰,即使在调试过程中出现了问题,也可以快速的通过源码进行定位. Volley编译 因为已

CentOS 7 安装网络工具

CentOS 7安装时默认是最小化安装,因此有很多命令无法使用(从网上其它资料里看到的).通常书籍或教程里都会让你使用ifconfig命令来查看网络IP配置情况,然而CentOS 7却不行,怎么办呢,听我慢慢道来. 为了能够使用网络工具,我们需要先把CentOS连接上互联网,然后通过yum install -y net-tools\*命令来安装网络工具. 大多数人学习CentOS都是采用虚拟机安装,因此需要使虚拟机能够上互联网,然后才能联网安装.而CentOS 7默认网卡是不起用的,因此我们需要

Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了.你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端. 下面是一些使用netcat的例子. [A(172.31.100.7) B(172.31.100.23)] Linux netcat

【安全牛学习笔记】基本工具-NETCAT(telnet/banner、传输文本信息)

常用工具 经常使用且功能强大 安全从业者必不可少的帮手 Nc / ncat Wireshack Tcpdump NETCAT-----NC 网络工具中的瑞士军刀--小身材.大智慧 侦听模式/传输模式 telnet/获取banner信息 传输文本信息 传输文件目录 加密传输文件 远程控制/木马 加密所有流量 流媒体服务器 远程克隆硬盘 NC-----TELNET/banner nc -nv 1.1.1.1 10 nc -nv 1.1.1.1 25 nc -nv 1.1.1.1 80 root:~#

安卓第八天笔记--网络编程二

安卓第八天笔记--网络编程二 1.网络图片查看器 /** * 网络图片查看器 * 1.获取输入的URL地址,判断是否为空 * 2.建立子线程,获取URl对象new URL(path) * 3.打开连接获取HttpURLConnection conn = (HttpURLConnection) url.openConnection(); * 4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒 * 5.设置请求方式setRequestMethod * GET或者P

安卓学习第三课——常见布局

1.相对布局 简单的说,就是通过描述每个组件所在的位置,使用的layout_below等,就是控制组件与组件之间的位置关系. 2.绝对布局 就是通过描述他的x,y坐标来确定位置 3.线性布局 有两种是水平和竖直对其方式,一般情况下整体会使用线性布局,来排列众多的组件 3.帧布局 我感觉就是一层一层的,默认的情况下,多个组件是在同一个位置,所以你需要去修改位置.同时可以选择是否显示. 这可以用来描述视频播放器暂停键的控制方法. 代码如下. <?xml version="1.0" e

4 个你需要了解的容器网络工具

摘要: 有如此之多的各种新的云计算技术.工具和技术需要我们跟进,到底从哪里开始学习是一个艰难的决定.这一系列下一代云计算技术的文章旨在让你快速了解新兴和快速变化领域的重大项目和产品,比如软件定义网络(SDN).容器,以及其交叉领域:容器网络. 有如此之多的各种新的云计算技术.工具和技术需要我们跟进,到底从哪里开始学习是一个艰难的决定.这一系列下一代云计算技术的文章旨在让你快速了解新兴和快速变化领域的重大项目和产品,比如软件定义网络(SDN).容器,以及其交叉领域:容器网络. 对于企业容器部署,容

[安卓学习]AndroidManifest.xml文件内容详解

一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所