`
uule
  • 浏览: 6351708 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

网络请求工具类HttpUtils

 
阅读更多

代码如下:

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @describe: 网络请求工具类
 */
public class HttpUtils {

    private static Dialog sLoadDialog;//请求Dialog

    private static List<Callback.Cancelable> sCancelables = new ArrayList<>();//请求队列

    /**
     * 网络请求 get
     *
     * @param url      请求Url
     * @param activity activity
     * @param isDialog 是否开启进度条
     * @param callBack 请求回调接口
     */
    public static void get(String url, Activity activity, final boolean isDialog, final CallBack callBack) {

        //开启或关闭进度条
        if (isDialog) {
            sLoadDialog = getLoadingDialog(activity);
        }
        if (isDialog) {
            sLoadDialog.show();
        }
        //开始请求
        RequestParams params = new RequestParams(url);
        Callback.Cancelable cancelable = x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                if (callBack != null) {
                    callBack.onSuccess(result);
                }
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Toast.makeText(App.getInstance(), "网络出错", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {
                if (isDialog && sLoadDialog != null) {
                    sLoadDialog.dismiss();
                }

            }
        });
        sCancelables.add(cancelable);
    }

    /**
     * 显示最后刷新时间
     *
     * @param refreshView pullToRefresh
     */
    public static void showTime(PullToRefreshBase refreshView) {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String label = format.format(new Date());
        // 显示最后更新的时间
        refreshView.getLoadingLayoutProxy()
                .setLastUpdatedLabel(label);
    }

    /**
     * 取消请求
     */
    public static void cancelAll() {
        if (sCancelables != null && sCancelables.size() > 0) {
            for (int i = 0, len = sCancelables.size(); i < len; i++) {
                sCancelables.get(i).cancel();
            }
            sCancelables.clear();
        }
    }

    /**
     * 得到自定义的progressDialog
     *
     * @param context Context
     * @return 返回
     */
    public static Dialog getLoadingDialog(Context context) {

        LayoutInflater inflater = LayoutInflater.from(context);
        // 加载view
        View view = inflater.inflate(R.layout.loading_dialog, null);
        RelativeLayout layout = (RelativeLayout) view.findViewById(R.id.rel_loading);
        // main.xml中的ImageView
        ImageView spaceshipImage = (ImageView) view.findViewById(R.id.img_loading);
        // 加载动画
        Animation animation = AnimationUtils.loadAnimation(
                context, R.anim.loading_animation);
        // 使用ImageView显示动画
        spaceshipImage.startAnimation(animation);
        // 创建自定义样式dialog
        Dialog loadingDialog = new Dialog(context, R.style.LoadingDialog);
        // 不可以用“返回键”取消
        loadingDialog.setCancelable(false);
        // 设置布局
        loadingDialog.setContentView(layout, new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT));
        return loadingDialog;

    }

    /**
     * 请求回调接口
     */
    public interface CallBack {
        void onSuccess(String result);
    }
}

 加载布局:

loading_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rel_loading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <!--loading图片-->
    <ImageView
        android:id="@+id/img_loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ico_loadvideo" />
    <!--loading提示信息-->
    <TextView
        android:id="@+id/tv_loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="@string/loading"
        android:textColor="@color/white" />

</RelativeLayout>

 ..

 

 

 

分享到:
评论

相关推荐

    HttpUtils 发送http请求工具类(实例讲解)

    HttpUtils 发送 HTTP 请求工具类详解 HTTP 请求工具类是 Java 语言中一个常用的工具类,用于发送 HTTP 请求并处理响应结果。本文将对 HttpUtils 发送 HTTP 请求工具类进行详细的讲解,包括其实现原理、关键代码分析...

    httputils网络请求工具

    HttpUtils网络请求工具类,可以获取网络上的数据转化给JSON数据然后处理成自己的想要的数据 http://blog.csdn.net/qq_30552993/article/details/51774509

    HttpUtils 请求工具类

    自己写的基于Java自带URL请求 处理get,post 不明白的,里面直接运行可以跑,

    httpUtils请求工具类

    "httpUtils请求工具类"是一个常见的Java库,用于简化HTTP请求操作,特别是GET和POST方法。这个工具类使得开发者无需深入了解底层HTTP协议,就能轻松地发送数据到服务器并获取响应。下面我们将深入探讨这个工具类以及...

    httpUtils等工具类

    在实际应用中,`httpUtils`工具类的使用可以大大简化网络请求的代码编写,减少错误,并提高代码的可读性和可维护性。例如,它可能会使用OkHttp或者Retrofit这样的网络库作为底层实现,提供更高级别的接口给上层业务...

    打造一个通用的网络请求引擎HttpUtils

    通过以上步骤,我们可以构建出一个基础的HttpUtils工具类。然而,为了提升可维护性和复用性,还可以考虑引入依赖注入框架(如Dagger)、使用Retrofit等高级库进行接口封装,以及添加更完善的错误处理和网络状态检测...

    http发送Get和Post请求工具类

    首先,我们来看`HttpUtils`类,这是核心的网络请求工具类。在`HttpUtils`中,通常会包含两个主要方法:`sendGetRequest`和`sendPostRequest`,分别用于执行GET和POST请求。 1. **GET请求**: - GET请求常用于获取...

    HttpUtils Java get post 工具类

    "HttpUtils Java get post 工具类" 提供了便捷的方法来发送GET和POST请求,简化了网络请求的操作。以下是对这两个主要HTTP方法的详细解释以及如何在Java中实现它们。 **1. GET方法** GET是HTTP中最常见的请求方法,...

    angular http请求工具类

    这个"angular http请求工具类"很可能是开发人员为了简化HTTP请求操作而创建的一个自定义服务。通常,这样的工具类会封装Angular内置的HttpClient模块,提供更方便、更易用的API接口。下面我们将详细探讨Angular中的...

    HttpClientUtil工具类发送get和post请求,支持http和https,支持发送文件

    综上所述,HttpClientUtil工具类在IT应用中扮演着关键角色,简化了HTTP和HTTPS请求的实现,特别是发送文件这样的复杂操作。通过封装HttpClient的核心功能,开发者可以更加专注于业务逻辑,而不必关心底层网络通信的...

    HttpUtils.java工具类(附注释)

    此为调用http请求的java工具类,基于springframework的RestTemplate,有注释

    Android 封装的工具类

    1. **网络请求工具类(HttpUtils.java)** 在Android应用中,我们常常需要与服务器进行数据交互,这就涉及到了HTTP网络请求。`HttpUtils`通常会封装Apache的HttpClient库或OkHttp库,提供发送GET、POST请求,处理...

    网络请求okhttputils工具类jar包

    网络请求okhttputils工具类jar包

    httpUtils调用接口工具类

    http请求第三方接口工具类,sendGet请求get请求,sendPost请求post接口。map参数类型

    HttpUtils工具类

    向指定 URL 发送GET方法的请求 可指定编码类型 向指定 URL 发送POST方法的请求 可带token

    Android封装的http请求实用工具类

    代码如下:import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URLEncoder;import java.security.KeyStore;import java.util.Iterator;import java.util.List;import java.util.Map;...

    Android开发常用工具类

    3. **网络请求工具类**: - `HttpUtils`:封装了网络请求,如GET、POST,支持异步和同步请求,可以处理网络请求的结果,如JSON解析。 - `OkHttpUtils`:基于OkHttp库的网络请求工具,提供了更简单的API调用方式。 ...

    XUtils-HttpUtils

    总结起来,`XUtils`的`HttpUtils`是Android开发中处理网络请求的一个强大工具,它的简洁接口和丰富的功能使得网络交互变得更加容易。通过学习和实践`HttpUtilsDemo`,开发者可以快速上手并应用到实际项目中。理解并...

    HttpUtils.zip

    3. **HttpUtils**:`HttpUtils`通常是一个封装了HttpClient或OkHttp的工具类,目的是为了简化网络请求的操作。在`HttpUtils.zip`中,这个工具类可能已经预设了常用的配置,如连接超时、读取超时等,并提供了简单易用...

    工具类,网络,支撑.

    "httpUtils"则是一个专门处理HTTP网络请求的工具类,它通常包含了发起GET、POST请求,处理响应数据等功能。在现代Web应用开发中,与服务器进行数据交互是必不可少的,而httpUtils这样的工具类就扮演了关键角色。 ...

Global site tag (gtag.js) - Google Analytics