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();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值