xUtils3.0版本的发送同步网络请求的方式
对于Android开发来说,基本都是用异步来从网络上请求数据,很少用到同步请求的。近日项目有个地方需要使用到同步请求(以我目前的知识储备来说好像只能用同步请求来解决这个问题了),去网上搜索相关资料,又没有找到什么明确的使用方法。所以记下来,以备不时之需。
首先bean类 里进行相关,注解:
/**
* 群成员信息类
* Created time on 2016/6/28.
*/
@HttpResponse(parser = JsonResponseParser.class)
public class GroupMemberInfo implements Serializable{
/**
* code : 0000
* data : {"departmentLevel":{},"dispatcherLevel":{"chinese":"超级管理员","key":"SUPER_ADMI_he
*/
private String code;
/**
* headImg :
* imid : 6HAYAkUeqehe/UtSewyg5tocsw68x8RAJ4SatSeYit7H6eY7dubtz9RpJijbHPibrpdxLw=
* mobile :
* name : 腾讯超级管理员
* uuid :
*/
private DataBean data;
private String msg;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Table(name="group_member")
public static class DataBean implements Serializable {
private DepartmentLevelBean departmentLevel;
/**
* chinese : 超级管理员
* key : SUPER_ADMIN
*/
@Column(name ="uuid", isId =true)
private String uuid;
@Column(name ="headImg")
private String headImg;
@Column(name ="imid")
private String imid;
@Column(name ="mobile")
private String mobile;
@Column(name ="name")
private String name;
public String getHeadImg() {
return headImg;
}
public void setHeadImg(String headImg) {
this.headImg = headImg;
}
public String getImid() {
return imid;
}
public void setImid(String imid) {
this.imid = imid;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
}
}
然后写出解析器的解析方式,我这里采用的是fastjson,真是感觉很好用。
/**
* Created by jin
* Created time on 2016/7/4.
*/
public class JsonResponseParser implements ResponseParser {// 如果实现 InputStreamResponseParser, 可实现自定义流数据转换.
@Override
public void checkResponse(UriRequest request) throws Throwable {
// custom check ?
// get headers ?
}
/**
* 转换result为resultType类型的对象
*
* @param resultType 返回值类型(可能带有泛型信息)
* @param resultClass 返回值类型
* @param result 字符串数据
* @return
* @throws Throwable
*/
@Override
public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
// TODO: json to java bean
if (resultClass == List.class) {
// fastJson 解析:
return JSON.parseArray(result, (Class<?>) ParameterizedTypeUtil.getParameterizedType(resultType, List.class, 0));
} else {
// fastjson 解析:
return JSON.parseObject(result, resultClass);
}
}
}
准备工作已经完成,最后就是直接使用了,用起来还是很简单的。
try {
RequestParams params = new RequestParams(UrlConstants.findUserInfoByUuid);
params.addBodyParameter(“accessToken”, User.getAccessToken());
params.addBodyParameter(“uid”, User.getUid());
//这里就是使用同步请求的地方了,只有一句代码,可以直接返回一个对象。
GroupMemberInfo groupMemberInfo = x.http().postSync(params, GroupMemberInfo.class);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
————————————————
版权声明:本文为CSDN博主「DoubleJuce」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a836456589/article/details/51821002