android Xutils3网络请求封装

使用xutils需在MyApplication里初始化
x.Ext.init(this);
x.Ext.setDebug(true); // 是否输出debug日志
package com.recylerviewdemo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yyy.recylerviewdemo.bean.LoginInfo;
import com.yyy.recylerviewdemo.bean.StageInfo;
import com.yyy.recylerviewdemo.httputils.MyHttpUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

/**
 * 网络请求封装,分为2部分。
 * 1.使用FastJson解析数据
 * 2.请求部分封装,Activity实现MyHttpUtils.MyHttpCallback回调重写方法
 * 使用方法:  new MyHttpUtils().xutilsGet("LOGIN", url, map,this);
 *  参数1表示请求名字,用于在回调方法中区分是哪一个请求的回调
 *  参数2是请求地址
 *  参数3是请求参数的map,可在MyHttpUtils添加固定的参数如token *  参数是实现MyHttpCallback的类,Activity本身/避免大量使用内部类导致的代码冗余
 * Created by yqr on 2016/10/18 0018.
 */

public class FastJsonTestActivity extends Activity implements MyHttpUtils.MyHttpCallback {
    @BindView(R.id.fast_btn)
    Button fastBtn;
    @BindView(R.id.fast_txt)
    TextView fastTxt;
    List<StageInfo> list = new ArrayList<>();
    @BindView(R.id.http_btn)
    Button httpBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fastjson_test);
        ButterKnife.bind(this);
    }

    @OnClick({R.id.fast_btn, R.id.http_btn})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.fast_btn:
                startChange();
                break;
            case R.id.http_btn:
                HashMap map = new HashMap<String, String>();
                map.put("user", "84:db:ac:83:49:f2");
                String url = "http://192.168.2.195/training/teacher/teacherLogin";
                new MyHttpUtils().xutilsGet("LOGIN", url, map,this);
                break;
        }
    }

    private void startChange() {
        String result = "{\"success\":true,\"message\":null,\"data\":null,\"list\":" +
                "[{\"id\":\"b8oi41zw1pc6ov2xsudkfyqwkrj3jq7w\",\"name\":\"1\",\"maxnum\":null,\"minnum\":null,\"description\":null,\"coursewareId\":\"aefcd23dbf4b475f87dc0832820796ea\",\"ordIdx\":0.0}," +
                "{\"id\":\"2cx4dse8vadmxkbdodxlnvk9esbbw9ew\",\"name\":\"2\",\"maxnum\":null,\"minnum\":null,\"description\":null,\"coursewareId\":\"aefcd23dbf4b475f87dc0832820796ea\",\"ordIdx\":1.0}]," +
                "\"totalSize\":null,\"page\":null,\"totalPage\":null}";
        JSONObject obj = JSON.parseObject(result);
        boolean success = obj.getBoolean("success");
        String Message = obj.getString("message");
        String listString = obj.getString("list");
        JSONArray arrayJson = obj.getJSONArray("list");
        list = JSON.parseArray(listString, StageInfo.class);
        String str1 = list.get(0).getId();
        String str2 = list.get(0).getName();
        String str3 = list.get(0).getCoursewareId();
        int str4 = list.get(0).getOrdIdx();

        String str11 = list.get(1).getId();
        String str22 = list.get(1).getName();
        String str33 = list.get(1).getCoursewareId();
        int str44 = list.get(1).getOrdIdx();
        fastTxt.setText(str1 + "\n" + str2 + "\n" + str3 + "\n" + str4 + "\n" + str11 + "\n" + str22 + "\n" + str33 + "\n" + str44 + "\n");
        getListReturn(listString, StageInfo.class);
    }

    /**
     * @param listStr--需要解析的list转成的字符串
     * @param clazz--需要生成的Bean的类型
     * @param <T>返回的Bean的类型
     * @return
     */
    public <T> List<T> getListReturn(String listStr, Class<T> clazz) {
        List<T> listReturn = new ArrayList<T>();
        listReturn = JSON.parseArray(listStr, clazz);
        return listReturn;
    }


    //----------网络请求回调start-----------------
    /**
     * @param result       结果
     * @param whereRequest 出自哪一个请求
     */
    @Override
    public void onSuccess(String result, String whereRequest) {
        switch (whereRequest) {
            case "LOGIN":
                Log.e("", "");
                LoginInfo loginInfo = JSON.parseObject(result, LoginInfo.class);
                fastTxt.setText(loginInfo.isSuccess() + "\n" + loginInfo.getMessage());
                break;
        }
    }

    /**
     * @param errorMsg     错误信息
     * @param whereRequest 出自哪一个请求
     */
    @Override
    public void onError(String errorMsg, String whereRequest) {

    }
    //----------网络请求回调end-----------------
}
 
 
package com.recylerviewdemo.httputils;

import android.util.Log;

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

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Created by yqr on 2016/10/18 0018.
 */

public class MyHttpUtils {
    String results = "";

    /**
     * @param whereRequest 请求名字
     * @param url          请求地址
     * @param map          请求参数map
     * @param callback     回调方法
     * @return
     */
    public void xutilsGet(final String whereRequest, String url, HashMap<String, String> map, final MyHttpCallback callback) {
        RequestParams params = new RequestParams(url);
        for (String key : map.keySet()) {
            String value = map.get(key);
            params.addBodyParameter(key, value);
        }
        params.addBodyParameter("token", "token");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Log.e("", "");
                callback.onSuccess(result, whereRequest);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.e("", "");
                callback.onError("出错了" + "onError", whereRequest);
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Log.e("", "");
                callback.onError("出错了" + "onCancelled", whereRequest);
            }

            @Override
            public void onFinished() {
                Log.e("", "");
            }
        });
    }

    /**
     * @param whereRequest 请求名字
     * @param url          请求地址
     * @param map          请求参数map
     * @param callback     回调方法
     */
    public void xutilsPost(final String whereRequest, String url, HashMap<String, String> map, final MyHttpCallback callback) {
        RequestParams params = new RequestParams(url);
        for (String key : map.keySet()) {
            String value = map.get(key);
            params.addBodyParameter(key, value);
        }
        params.addBodyParameter("token", "token");
        x.http().post(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Log.e("", "");
                callback.onSuccess(result, whereRequest);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.e("", "");
                callback.onError("出错了" + "onError", whereRequest);
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Log.e("", "");
                callback.onError("出错了" + "onCancelled", whereRequest);
            }

            @Override
            public void onFinished() {
                Log.e("", "");
            }
        });
    }


    public interface MyHttpCallback {
        void onSuccess(String result, String whereRequest);

        void onError(String errorMsg, String whereRequest);
    }

}


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值