Xutils 在Android 开发中是一个比较老的网络请求框架,目前在市面上,仍然有一些老的项目在使用和维护.
本文给需要使用Xutils网络请求框架的朋友,提供一个快速搭建的代码参考:
app的module build,gradle中
添加:
compile 'org.xutils:xutils:3.4.0'
ParamsUtil.java
public class ParamsUtil {
private static final String TAG = "ParamsUtil";
public static ParamsUtil instances;
public static ParamsUtil getInstances() {
if (instances == null) {
instances = new ParamsUtil();
}
return instances;
}
//绑定参数
private RequestParams builderParams(Map<String, String> map) {
RequestParams params = new RequestParams();
Iterator<String> key = map.keySet().iterator();
while (key.hasNext()) {
String key_s = key.next();
params.addQueryStringParameter(key_s, map.get(key_s));
}
return params;
}
private RequestParams builderBodyParams(Map<String, String> map) {
RequestParams params = new RequestParams();
Iterator<String> key = map.keySet().iterator();
while (key.hasNext()) {
String key_s = key.next();
params.addBodyParameter(key_s, map.get(key_s));
}
return params;
}
public RequestParams appLogin1(String xxx, String yyy) {
Map<String, String> params = new HashMap<>();
params.put("xxx", xxx);
params.put("yyy", yyy);
return builderParams(params);
}
}
HttpRequest.java
public class HttpRequest {
public static HttpRequest instances;
public static HttpRequest getInstances() {
if (instances == null) {
instances = new HttpRequest();
}
return instances;
}
//Get请求
public void xGet(final Context context, RequestParams param, final String url, final Type cL, final RequestResultCallBack callback) {
if (NetUtil.isNetConnected(context)) {
param.setUri(url);
Logger.i("uploadUrl", String.valueOf(param));
param.setConnectTimeout(45 * 1000);//45秒缓存
final long start_time = System.currentTimeMillis();
x.http().get(param, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.i("服务器成功时响应时间 = >", String.valueOf(System.currentTimeMillis() - start_time));
// Logger.json("succ", result);
Logger.e("succ", result);
NewBaseBean entity = JSON.parseObject(result, cL);
if (entity.getCode() == 200) {
callback.onSucess(entity);
} else {
callback.onFailure(-1, entity.getMessage());
}
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
callback.onFailure(32000, "您的网络不太理想,请稍后重试吧~");//超时
Logger.i("error", Constant.appendStr(ex.getMessage(),""));
}
@Override
public void onCancelled(CancelledException cex) {
Logger.i("服务器请求取消 = >", Constant.appendStr(cex.getMessage(),""));
}
@Override
public void onFinished() {
Logger.i("服务器请求完成 = >", "");
}
});
} else {
if (callback != null) {
callback.onFailure(-2, "请检查网络是否正常");
}
}
}
//Post请求
public void xPost(final Context context, final RequestParams param, final String url, final Type cL, final RequestResultCallBack callback) {
if (NetUtil.isNetConnected(context)) {
param.setUri(url);
Logger.i("uploadUrl", String.valueOf(param));
param.setConnectTimeout(45 * 1000);//45秒缓存
final long start_time = System.currentTimeMillis();
x.http().post(param, new Callback.CommonCallback<String>() {
@Override
public void onSu