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-03-26 18:05:09

    MYSQL OR与AND一起 的用法

    查询结果是id = 2且age = 20或者id=1SELECT * from student WHERE id = 1 or id = 2 AND age = 20;12

  • 2018-03-27 11:27:09

    Java中Set集合的使用

    Set类继承了Conllection类,是一种集合类。Set的实现类有三个,下面我们会一一来说这些的不一样。

  • 2018-03-27 11:36:58

    Java中数组、List、Set互相转换

    需要注意的是, Arrays.asList() 返回一个受指定数组决定的固定大小的列表。所以不能做 add 、 remove等操作,否则会报错。

  • 2018-03-27 16:37:57

    Java 8 将List转换为Map

    几个Java 8示例来向您展示如何将一个List对象转换为一个Map,以及如何处理重复的键

  • 2018-03-31 09:37:33

    Android Sqlite查询优化之一---运用索引

    最近笔者在做聊天功能模块,发现当本地聊天数据记录过大,以10万行数据进行了检索测试,发现时间太长了,要6s左右,但学着运用了下索引,时间大大提升,紧要几百毫秒就能完成. 以下内容,摘抄至网络

  • 2018-04-02 10:50:59

    mybatis 中的<![CDATA[ ]]>

    在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决。

  • 2018-04-03 10:21:35

    jquery实时监听输入框值变化

    在做web开发时候很多时候都需要即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感。而采用onchange时间又往往是在输入框失去焦点(onblur)时候触发,有时候并不能满足条件。