使用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);
}
}