线条小狗

插画师或设计师以线条风格创作小狗主题作品

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

Previous Article

发表回复

Your email address will not be published. Required fields are marked *.

*
*