xUtils3.0版本的发送同步网络请求的方式

2018-08-07 20:00:42

对于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();}
  • 2018-02-23 14:22:50

    mysql的yearweek 和 weekofyear函数

    例如 2010-3-14 ,礼拜天 SELECT YEARWEEK('2010-3-14') 返回 11 SELECT YEARWEEK('2010-3-14',1) 返回 10 其中第二个参数是 mode ,具体指的意思如下: Mode First day of week Range Week 1 is the first week … 0 Sunday 0-53 with a Sunday in this year 1 Monday 0-53 with more than 3 days this year 2 Sunday 1-53 with a Sunday in this year 3 Monday 1-53 with more than 3 days this year 4 Sunday 0-53 with more than 3 days this year 5 Monday 0-53 with a Monday in this year 6 Sunday 1-53 with more than 3 days this year 7 Monday 1-53 with a Monday in this year 2.

  • 2018-02-23 17:20:44

    Mysql数据库If语句的使用

    MySQL的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:

  • 2018-02-24 10:16:36

    Java工具类之Apache的Commons Lang和BeanUtils

    Apache Commons包估计是Java中使用最广发的工具包了,很多框架都依赖于这组工具包中的一部分,它提供了我们常用的一些编程需要,但是JDK没能提供的机能,最大化的减少重复代码的编写。