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-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参数只是插入数据库中的字段,真实的图片名称系统会自动分配。 或者

  • 2018-12-11 15:45:00

    Laravel中七个非常有用但很少人知道的Carbon方法

    在编写PHP应用时经常需要处理日期和时间,Carbon继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单,这篇文章主要给大家分享了Laravel中七个非常有用但很少人知道的Carbon方法,需要的朋友可以参考下。

  • 2018-12-13 11:41:23

    Android drawable微技巧,你所不知道的drawable的那些细节

    好像有挺久时间没更新博客了,最近我为了准备下一个系列的博客,也是花了很长的时间研读源码。很遗憾的是,下一个系列的博客我可能还要再过一段时间才能写出来,那么为了不至于让大家等太久,今天就给大家更新一篇单篇的文章,讲一讲Android drawable方面的微技巧。

  • 2018-12-13 17:14:41

    Android安全开发之浅谈密钥硬编码

    在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码、文件中,这样做会引起很大风险。信息安全的基础在于密码学,而常用的密码学算法都是公开的,加密内容的保密依靠的是密钥的保密,密钥如果泄露,对于对称密码算法,根据用到的密钥算法和加密后的密文,很容易得到加密前的明文;对于非对称密码算法或者签名算法,根据密钥和要加密的明文,很容易获得计算出签名值,从而伪造签名。