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-12-08 11:44:26

    php 时间函数strtotime 使用详解

    这篇文章介绍的内容是关于php 时间函数strtotime 使用详解 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

  • 2018-12-09 15:52:37

    【Android - 进阶】之Animator属性动画

    在3.0系统之前,Android给我们提供了逐帧动画Frame Animation和补间动画Tween Animation两种动画: 逐帧动画的原理很简单,就是将一个完整的动画拆分成一张张单独的图片,然后将它们连贯起来进行播放; 补间动画是专门为View提供的动画,可以实现View的透明度、缩放、平移和旋转四种效果。

  • 2018-12-09 18:12:45

    显示软键盘,并让布局压缩

    博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 搜博主文章 写博客传资源 原

  • 2018-12-09 22:48:14

    ToolBar修改返回按钮图标

    使用Toolbar时,有时因为不同的手机设备,不能使用系统默认的主题样式或者图标,必须指定特定的资源,防止APP在不同设备上的效果不一样! 我在使用Toolbar时,把这个布局作为一个公共的了,所以修改起来比较容易,下面是该Toolbar的布局文件:

  • 2018-12-09 22:49:12

    Android 修改Toolbar自带的图标颜色

    toolbar自带的按钮颜色是黑色,现在想修改按钮图标颜色,方法如下: 在布局文件中的Toolbar中增加如下2个 属性

  • 2018-12-09 22:50:46

    Toolbar 标题字体大小及字体颜色

    无师无门遇到点破事也得百度,就单单这破问题 Toolbar 标题字体大小及字体颜色,结果百度一推重复没用的结果,要么一推英文的解释,小学学历的我表示很崩溃!

  • 2018-12-10 00:57:37

    Android沉浸式状态栏(透明状态栏)最佳实现

    在Android4.4之前,我们的应用没法改变手机的状态栏颜色,当我们打开应用时,会出现上图中左侧的画面,在屏幕的顶部有一条黑色的状态栏,和应用的风格非常不协调;为了提供更好的界面交互,google在Android4.4以后提供了设置沉浸式状态栏的方法,对于沉浸式状态栏这个名字存在争议,我们不做讨论,实际的效果其实就是透明的状态栏,然后在状态栏的位置显示我们自定义的颜色,通常为应用的actionbar的颜色,或者是将应用的整体的一张图片也占据到状态栏中,如下图所示:

  • 2018-12-11 10:20:40

    Android下载图片到相册

    调用以上系统自带的方法会把bitmap对象保存到系统图库中,但是这种方法无法指定保存的路径和名称,上述方法的title、description参数只是插入数据库中的字段,真实的图片名称系统会自动分配。 或者